Dette spørgsmål har allerede et svar her :

Kommentarer

  • Dette spørgsmål er ikke en duplikat. linket spørgsmål forklarer formatet og betydningen af DISPLAY env-variablen, mens dette spørgsmål stiller spørgsmål om " tildelingen til en env-variabel og det berørte program skrives i samme linje ".

Svar

DISPLAY=:0 gnome-panel er en shell-kommando, der kører den eksterne kommando gnome-panel med miljøvariablen DISPLAY indstillet til :0. Shell-syntaksen VARIABLE=VALUE COMMAND indstiller kun miljøvariablen VARIABLE for varigheden af den angivne kommando. Det svarer stort set til (export VARIABLE=VALUE; exec COMMAND).

Miljøvariablen DISPLAY fortæller GUI-programmer, hvordan man kommunikerer med GUI. Et Unix-system kan køre flere X-servere , dvs. flere skærme. Disse skærme kan være fysiske skærme (en eller flere skærme) eller fjernskærme (videresendt over netværket, f.eks. Over SSH) eller virtuelle skærme såsom Xvfb , osv. Den grundlæggende syntaks, der skal angives, er HOST:NUMBER; hvis du udelader HOST -delen, er displayet lokalt.

Skærme er nummereret fra 0, så :0 er den første lokale skærm, der blev startet. Ved typiske opsætninger er dette det, der vises på computerens skærm (er).

Som alle miljøvariabler arves DISPLAY fra forældreproces til barn Når du f.eks. logger ind på en GUI-session, indstiller loginmanageren eller sessionstarteren DISPLAY korrekt, og variablen arves af alle programmerne i sessionen. Når du åbner en SSH-forbindelse med X-videresendelse, indstiller SSH miljøvariablen DISPLAY til den videresendte forbindelse, så de programmer, du kører på den eksterne maskine, vises på den lokale maskine. Hvis der er ingen videresendt X-forbindelse (enten fordi SSH er konfigureret til ikke at gøre det, eller fordi der ikke er nogen lokal X-server), SSH indstiller ikke DISPLAY.

Hvis du indstiller DISPLAY, vises programmet eksplicit på et sted, hvor det normalt ikke ville være. Hvis du f.eks. Kører DISPLAY=:0 gnome-panel i en SSH forbindelse stjerne ts et Gnome-panel på den lokale maskines lokale skærm (forudsat at der er et, og at brugeren har adgang til det). Eksplicit at indstille DISPLAY=:0 er normalt en måde at få adgang til en maskins lokale skærm fra uden for den lokale session, f.eks. Via fjernadgang eller fra et cron-job.

Svar

Det er en miljøvariabel, der sendes lige til det program snarere end skallen som helhed. Dette sker, når du indstiller en variabel på samme linje som en kommando.

X11-programmer har brug for at vide, hvor windows skal vises, da det er et klient / serversystem, og du muligvis viser på en ekstern maskine. Dette betyder simpelthen at bruge det første display på den lokale maskine.

Dette opsættes normalt automatisk, når du logger på et skrivebordsmiljø. Åbn f.eks. En grafisk terminal og skriv echo $DISPLAY.

Kommentarer

  • tillader bash-syntaks tildelingen til en env-variabel, og det berørte program skrives i samme linje, og adskilt af hvidt mellemrum?
  • Ja, det ' er nøjagtigt som du citerede i spørgsmålet.
  • @Tim Alle POSIX-kompatible skaller tillad det. Det betyder at indstille og eksportere miljøvariablen kun for den ene kommando, men ikke at påvirke værdien af shellvariablen (hvis den allerede har en værdi) bagefter.
  • @MarkPlotnick – det ' er lidt mere finere end det. Når en variabelerklæring forud for en kommando, men en shell-funktion eller en speciel indbygget, skal erklæringen ikke påvirke den overordnede shell ' s definition for specifikationen ' d var, men når det gøres for en af disse POSIX, hedder det, at variabeldeklarationen skal holde fast. Så POSIXLY skal one=$1 shift samtidig definere den aktuelle shellvariabel $one for at værdi det samme som den aktuelle shell ' s første position, mens positionen fjernes. bash bryder forresten med specifikationen som standard.
  • @mikeserv Tak som altid for den mere præcise og korrekte beskrivelse.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *