Megjegyzések
- Ez a kérdés nem másolat. A kapcsolt kérdés elmagyarázza a DISPLAY env változó formátumát és jelentését, míg ez a kérdés a " hozzárendelésre vonatkozik. egy env változót és az érintett programot ugyanabba a sorba kell írni ".
Válasz
DISPLAY=:0 gnome-panel
egy shell parancs, amely a gnome-panel
külső parancsot futtatja a beállítása :0
. A héj szintaxisa VARIABLE=VALUE COMMAND
az VARIABLE
környezeti változót csak a megadott parancs időtartamára állítja be. Nagyjából ekvivalens az (export VARIABLE=VALUE; exec COMMAND)
kifejezéssel.
Az DISPLAY
környezeti változó megmondja a GUI programoknak, hogyan kell kommunikálni a GUI-val. Egy Unix rendszer futtathat több X szervert , azaz többszörös megjelenítést. Ezek a kijelzők lehetnek fizikai kijelzők (egy vagy több monitor), vagy távoli kijelzők (továbbítva a hálózaton, pl. SSH-n keresztül), vagy virtuális kijelzők, például Xvfb , stb. A kijelzők megadásának alapvető szintaxisa a HOST:NUMBER
; ha kihagyja a HOST
részt, a megjelenítés helyi.
A kijelzők 0-tól vannak számozva, tehát :0
az első helyi kijelző, amely elindult. A tipikus beállításoknál ez jelenik meg a számítógép monitorán.
Mint minden környezeti változó, az DISPLAY
is a szülői folyamatoktól öröklődik. Ha például belép egy GUI munkamenetbe, a bejelentkezéskezelő vagy a munkamenet indítója megfelelően beállítja az DISPLAY
elemet, és a változót a munkamenet összes programja örökli. X továbbítással rendelkező SSH kapcsolat, az SSH a DISPLAY
környezeti változót az átirányított kapcsolatra állítja, így a távoli gépen futtatott programok megjelennek a helyi gépen. nincs továbbított X kapcsolat (vagy azért, mert az SSH úgy van konfigurálva, hogy ne csinálja, vagy azért, mert nincs helyi X szerver), az SSH nem állítja be a DISPLAY
elemet.
Az DISPLAY
beállítás kifejezetten azt eredményezi, hogy a program egy olyan helyen jelenik meg, ahol általában nem lenne. Például a DISPLAY=:0 gnome-panel
futtatása SSH-ban kapcsolat csillag tegyen egy távoli gép helyi kijelzőjén egy Gnome panelt (feltételezve, hogy van ilyen és a felhasználó jogosult hozzáférni hozzá). A DISPLAY=:0
kifejezett beállítása általában a gép helyi megjelenítésének elérési módja a helyi munkameneten kívülről, például távoli hozzáférésből vagy cron jobból.
Válasz
Ez egy olyan környezeti változó, amelyet csak az adott program továbbít, nem pedig a shell egésze. Ez akkor történik, ha egy változót ugyanazon a soron állít be, mint egy parancs.
Az X11 programoknak tudniuk kell, hogy hol jelenítsék meg az ablakokat, mivel ez kliens / szerver rendszer, és Ön távoli gépen jeleníthet meg. Ez egyszerűen azt jelenti, hogy az első kijelzőt a helyi gépen kell használni.
Ezt általában automatikusan beállítják, amikor bejelentkezik egy asztali környezetbe. Például nyisson meg egy grafikus terminált, és írja be a következőt: echo $DISPLAY
.
Megjegyzések
- a bash szintaxis lehetővé teszi a hozzárendelést egy env változóhoz, és az érintett program ugyanarra a sorra íródik, és szóköz választja el egymástól?
- Igen, ' pontosan olyan, mint amit a kérdésben idézett.
- @Tim Minden POSIX-kompatibilis héj Ez azt jelenti, hogy a környezeti változót csak az adott parancshoz állítja be és exportálja, de nem befolyásolja utólag a shell változó értékét (ha már van értéke).
- @MarkPlotnick – it ' sa kicsit több finomabb szemcsésségű ennél. Amikor egy változó deklarációt bármely parancshoz előhív, de egy shell függvényt vagy egy speciális beépítettet, a deklarációnak nem szabad befolyásolnia a szülőhéj ' specifikációját a spec ' d var, de amikor ezt a POSIX bármelyikét megcsinálja, kijelenti, hogy a változó deklarációnak ragaszkodnia kell. Tehát, POSIXLY,
one=$1 shift
-nek egyidejűleg meg kell határoznia az aktuális$one
héjváltozót, hogy ugyanaz legyen az értéke, mint az aktuális héj ' első helyzetét, miközben eltávolítja az említett helyzetet. Abash
egyébként alapértelmezés szerint megtöri a specifikációt. - @mikeserv Köszönöm, mint mindig a pontosabb és helyesebb leírást.