Komentáře
- Tato otázka není duplikát. propojená otázka vysvětluje formát a význam proměnné DISPLAY env, zatímco tato otázka se ptá na " přiřazení proměnná env a ovlivněný program budou zapsány do stejného řádku ".
Odpovědět
DISPLAY=:0 gnome-panel
je příkaz prostředí, který spouští externí příkaz gnome-panel
s proměnnou prostředí DISPLAY
nastaveno na :0
. Syntaxe prostředí VARIABLE=VALUE COMMAND
nastavuje proměnnou prostředí VARIABLE
pouze na dobu trvání zadaného příkazu. Je to zhruba ekvivalent (export VARIABLE=VALUE; exec COMMAND)
.
Proměnná prostředí DISPLAY
říká programům GUI, jak s GUI komunikovat. Systém Unix může provozovat více X serverů , tj. Vícenásobné zobrazení. Může se jednat o fyzické displeje (jeden nebo více monitorů), vzdálené displeje (předávané přes síť, např. Přes SSH) nebo virtuální displeje, například Xvfb , atd. Základní syntaxe pro specifikaci zobrazení je HOST:NUMBER
; pokud vynecháte část HOST
, je displej místní.
Zobrazení jsou očíslovány od 0, takže :0
je první místní displej, který byl spuštěn. U typických nastavení je to, co se zobrazuje na monitoru (monitorech) počítače.
Stejně jako všechny proměnné prostředí se DISPLAY
dědí z nadřazeného procesu na dítě například. Když se přihlásíte do relace grafického uživatelského rozhraní, správce přihlášení nebo spouštěč relace nastaví odpovídajícím způsobem DISPLAY
a proměnnou zdědí všechny programy v relaci. Když otevřete připojení SSH s přesměrováním X, SSH nastaví proměnnou prostředí DISPLAY
na přeposlané připojení, aby se programy, které spouštíte na vzdáleném počítači, zobrazovaly na místním počítači. žádné přeposlané připojení X (buď proto, že je SSH nakonfigurován tak, aby to nedělal, nebo protože neexistuje žádný místní server X), SSH nenastavuje DISPLAY
.
Nastavení DISPLAY
explicitně způsobí, že se program zobrazí na místě, kde by za normálních okolností nebyl. Například spuštění DISPLAY=:0 gnome-panel
v SSH spojovací hvězda Je to panel Gnome na místním displeji vzdáleného počítače (za předpokladu, že existuje a že je uživatel oprávněn k němu přistupovat). Explicitní nastavení DISPLAY=:0
je obvykle způsob, jak přistupovat k místnímu zobrazení stroje mimo místní relaci, například přes vzdálený přístup nebo z úlohy cron.
Odpověď
Je to proměnná prostředí, která je předávána právě tomuto programu, nikoli prostředí jako celku. To se stane, když nastavíte proměnnou na stejný řádek jako příkaz.
Programy X11 potřebují vědět, kde zobrazit okna, protože se jedná o systém klient / server a můžete je zobrazovat na vzdáleném počítači. To jednoduše znamená použít první displej na místním počítači.
Toto se obvykle nastaví automaticky při přihlášení do desktopového prostředí. Otevřete například grafický terminál a zadejte echo $DISPLAY
.
Komentáře
- umožňuje bash syntaxe přiřazení proměnné env a ovlivněný program se zapíše do stejného řádku a odděleny mezerou?
- Ano, je to ' přesně tak, jak jste uvedli v otázce.
- @Tim Všechny skořápky kompatibilní s POSIXem To znamená. Znamená to nastavit a exportovat proměnnou prostředí pouze pro tento jeden příkaz, ale neovlivnit poté hodnotu proměnné prostředí (pokud již má hodnotu).
- @MarkPlotnick – it ' sa trochu víc jemnější než to. Při předponě deklarace proměnné na libovolný příkaz kromě funkce shellu nebo speciální vestavěné deklarace by nemělo mít vliv na definici nadřazeného prostředí ' pro spec ' d var, ale když to děláte pro kterýkoli z těchto POSIX, uvádí se, že deklarace proměnné by měla zůstat. POSIXLY by tedy
one=$1 shift
měl současně definovat aktuální proměnnou shellu$one
, aby měla stejnou hodnotu jako aktuální shell ' s první pozicí, přičemž uvedenou pozici odstraníte.bash
, mimochodem, ve výchozím nastavení rozbije w / specifikaci. - @mikeserv Díky jako vždy za přesnější a správnější popis.