Kommentare
Antwort
DISPLAY=:0 gnome-panel
ist ein Shell-Befehl, der den externen Befehl gnome-panel
mit der Umgebungsvariablen auf :0
gesetzt. Die Shell-Syntax VARIABLE=VALUE COMMAND
legt die Umgebungsvariable VARIABLE
nur für die Dauer des angegebenen Befehls fest. Dies entspricht in etwa (export VARIABLE=VALUE; exec COMMAND)
.
Die Umgebungsvariable DISPLAY
teilt GUI-Programmen mit, wie sie mit der GUI kommunizieren sollen. Auf einem Unix-System können mehrere X-Server ausgeführt werden, d. H. Mehrere Anzeigen. Diese Anzeigen können physische Anzeigen (ein oder mehrere Monitore) oder Remote-Anzeigen (über das Netzwerk weitergeleitet, z. B. über SSH) oder virtuelle Anzeigen wie Xvfb sein. usw. Die grundlegende Syntax zum Festlegen von Anzeigen lautet HOST:NUMBER
. Wenn Sie den Teil HOST
weglassen, ist die Anzeige lokal.
Die Anzeigen sind von 0 nummeriert, sodass :0
ist die erste lokale Anzeige, die gestartet wurde. Bei typischen Setups wird dies auf den Monitoren des Computers angezeigt.
Wie alle Umgebungsvariablen wird DISPLAY
vom übergeordneten Prozess an den untergeordneten Prozess vererbt Wenn Sie sich beispielsweise bei einer GUI-Sitzung anmelden, setzt der Anmeldemanager oder Sitzungsstarter DISPLAY
entsprechend und die Variable wird von allen Programmen in der Sitzung geerbt. Beim Öffnen Bei einer SSH-Verbindung mit X-Weiterleitung setzt SSH die Umgebungsvariable DISPLAY
auf die weitergeleitete Verbindung, sodass die Programme, die Sie auf dem Remotecomputer ausführen, auf dem lokalen Computer angezeigt werden Keine weitergeleitete X-Verbindung (entweder weil SSH so konfiguriert ist, dass dies nicht der Fall ist, oder weil kein lokaler X-Server vorhanden ist), setzt SSH nicht DISPLAY
.
Wenn Sie DISPLAY
explizit festlegen, wird das Programm explizit an einer Stelle angezeigt, an der es normalerweise nicht angezeigt wird. Führen Sie beispielsweise DISPLAY=:0 gnome-panel
in einem SSH aus Verbindungsstern ts ein Gnome-Bedienfeld auf der lokalen Anzeige des Remote-Computers (vorausgesetzt, es gibt eines und der Benutzer ist berechtigt, darauf zuzugreifen). Das explizite Festlegen von DISPLAY=:0
ist normalerweise eine Möglichkeit, von außerhalb der lokalen Sitzung auf die lokale Anzeige eines Computers zuzugreifen, z. B. über einen Remotezugriff oder von einem Cron-Job aus.
Antwort
Dies ist eine Umgebungsvariable, die nur an dieses Programm und nicht an die gesamte Shell übergeben wird. Dies geschieht, wenn Sie eine Variable in derselben Zeile wie ein Befehl festlegen.
X11-Programme müssen wissen, wo Fenster angezeigt werden sollen, da es sich um ein Client / Server-System handelt und Sie möglicherweise auf einem Remotecomputer anzeigen. Dies bedeutet einfach, dass Sie die erste Anzeige auf dem lokalen Computer verwenden.
Diese wird normalerweise automatisch eingerichtet, wenn Sie sich bei einer Desktop-Umgebung anmelden. Öffnen Sie beispielsweise ein grafisches Terminal und geben Sie echo $DISPLAY
.
Kommentare
- Ermöglicht die Bash-Syntax die Zuweisung zu einer env-Variablen und das betroffene Programm in dieselbe Zeile und durch Leerzeichen getrennt?
- Ja, ' entspricht genau den Angaben in der Frage.
- @Tim Alle POSIX-kompatiblen Shells Dies zulassen. Dies bedeutet, dass die Umgebungsvariable nur für diesen einen Befehl festgelegt und exportiert wird, der Wert der Shell-Variablen (sofern sie bereits einen Wert hat) anschließend nicht beeinflusst wird.
- @MarkPlotnick – it ' ist etwas mehr feinkörniger als das. Wenn Sie einer Variablendeklaration einen Befehl außer einer Shell-Funktion oder einer speziellen integrierten Funktion voranstellen, sollte die Deklaration die Definition der übergeordneten Shell ' für die Spezifikation ' d var, aber wenn Sie dies für eine dieser POSIX-Anweisungen tun, sollte die Variablendeklaration bestehen bleiben. Daher sollte
one=$1 shift
gleichzeitig die aktuelle Shell-Variable$one
so definieren, dass sie den gleichen Wert wie die aktuelle Shell s erste Position beim Entfernen der Position.bash
bricht übrigens standardmäßig mit der Spezifikation. - @mikeserv Vielen Dank wie immer für die genauere und korrektere Beschreibung.