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.