Dette spørsmålet har allerede et svar her :

Kommentarer

  • Dette spørsmålet er ikke et duplikat. koblet spørsmål forklarer formatet og betydningen av DISPLAY env-variabelen, mens dette spørsmålet spør om " tildelingen til en env-variabel og det berørte programmet skrives på samme linje ".

Svar

DISPLAY=:0 gnome-panel er en skallkommando som kjører den eksterne kommandoen gnome-panel med miljøvariabelen DISPLAY satt til :0. Skalsyntaks VARIABLE=VALUE COMMAND angir bare miljøvariabelen VARIABLE for varigheten av den angitte kommandoen. Det tilsvarer omtrent (export VARIABLE=VALUE; exec COMMAND).

Miljøvariabelen DISPLAY forteller GUI-programmer hvordan man kommuniserer med GUI. Et Unix-system kan kjøre flere X-servere , dvs. flere skjermer. Disse skjermene kan være fysiske skjermer (en eller flere skjermer), eller eksterne skjermer (videresendt over nettverket, f.eks. Over SSH), eller virtuelle skjermer som Xvfb , etc. Den grunnleggende syntaksen for å spesifisere skjermer er HOST:NUMBER; hvis du utelater HOST -delen, er skjermen lokal.

Skjermene er nummerert fra 0, så :0 er den første lokale skjermen som ble startet. På typiske oppsett er dette det som vises på datamaskinens skjerm.

Som alle miljøvariabler, arves DISPLAY fra foreldreprosess til barn Når du for eksempel logger på en GUI-økt, angir påloggingsadministratoren eller øktstarteren DISPLAY på riktig måte, og variabelen arves av alle programmene i økten. Når du åpner en SSH-forbindelse med X-videresending, setter SSH miljøvariabelen DISPLAY til den videresendte forbindelsen, slik at programmene du kjører på den eksterne maskinen vises på den lokale maskinen. ingen videresendt X-tilkobling (enten fordi SSH er konfigurert til ikke å gjøre det, eller fordi det ikke er noen lokal X-server), angir SSH ikke DISPLAY.

Hvis du stiller inn DISPLAY, vises programmet eksplisitt på et sted der det normalt ikke ville være. Hvis du for eksempel kjører DISPLAY=:0 gnome-panel i en SSH tilkoblingsstjerne ts et Gnome-panel på den lokale maskinens lokale skjerm (forutsatt at det er et og at brukeren har autorisasjon til å få tilgang til det). Eksplisitt innstilling av DISPLAY=:0 er vanligvis en måte å få tilgang til en maskins lokale skjerm fra utenfor den lokale økten, for eksempel over ekstern tilgang eller fra en cron-jobb.

Svar

Det er en miljøvariabel som sendes bare til det programmet, i stedet for skallet som helhet. Dette skjer når du setter en variabel på samme linje som en kommando.

X11-programmer trenger å vite hvor de skal vise windows, siden det er et klient- / serversystem, og du kan vise på en ekstern maskin. Dette betyr ganske enkelt at du bruker den første skjermen på den lokale maskinen.

Dette settes vanligvis opp automatisk når du logger på et skrivebordsmiljø. Åpne for eksempel en grafisk terminal og skriv echo $DISPLAY.

Kommentarer

  • tillater bash-syntaksen tildelingen til en env-variabel og det berørte programmet skrives på samme linje, og atskilt med hvite mellomrom?
  • Ja, det ' er nøyaktig slik du siterte i spørsmålet.
  • @Tim Alle POSIX-kompatible skall tillat det. Det betyr å angi og eksportere miljøvariabelen bare for den ene kommandoen, men ikke å påvirke verdien på skallvariabelen (hvis den allerede har en verdi) etterpå.
  • @MarkPlotnick – det ' er litt mer finere korn enn det. Når prefikset av en variabelerklæring til en hvilken som helst kommando, men en skallfunksjon eller en spesiell innebygd, skal erklæringen ikke påvirke det overordnede skallet ' s definisjon for spesifikasjonen ' d var, men når du gjør det for en av disse POSIX sier at variabel erklæringen skal holde seg. Så POSIXLY bør one=$1 shift samtidig definere den nåværende skallvariabelen $one for å verdsette det samme som det nåværende skallet ' s første posisjonering mens posisjonen fjernes. bash bryter forresten m / spesifikasjonen som standard.
  • @mikeserv Takk som alltid for en mer presis og korrekt beskrivelse.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *