Jestem nowy w skryptowaniu powłoki. Nie rozumiem, co to $DISPLAY
jest zmienna środowiskowa.
Mam Ubuntu 13.10 i używam /bin/bash
powłoki. Mam dwa monitory.
Pytania:
Polecenie
echo $DISPLAY
wydrukuje się:0.0
na moim komputerze (na obu monitorach). Co to znaczy?W jakich przypadkach
$DISPLAY
zmienna będzie pusta lub NULL?Czy są na ten temat jakieś artykuły lub samouczki?
xorg
environment-variables
Chandrayya GK
źródło
źródło
echo $DISPLAY
drukuje się:0
NIE:0.0
Odpowiedzi:
Magiczne słowo w systemie X Window to DISPLAY. Wyświetlacz składa się (uproszczony) z:
Wyświetlaniem zarządza program serwera, znany jako serwer X. Serwer umożliwia wyświetlanie możliwości innym łączącym się z nim programom.
Serwer zdalny wie, gdzie musi przekierować ruch sieciowy X poprzez definicję zmiennej środowiskowej DISPLAY, która ogólnie wskazuje na serwer X Display znajdujący się na twoim komputerze lokalnym.
Wartość zmiennej środowiskowej wyświetlania wynosi:
gdzie:
nazwa hosta to nazwa komputera, na którym działa serwer X. Pominięta nazwa hosta oznacza localhost.
D jest numerem kolejnym (zwykle 0). Można to zmienić, jeśli do jednego komputera podłączonych jest wiele wyświetlaczy.
S to numer ekranowy. Wyświetlacz może mieć wiele ekranów. Zwykle jest tylko jeden ekran, gdzie domyślnym jest 0.
Przykład wartości
hostname:D.S
oznacza ekran S na wyświetlaczu D nazwy hosta; serwer X dla tego wyświetlacza nasłuchuje na porcie TCP 6000 + D.host/unix:D.S
oznacza ekran S na wyświetlaczu D hosta; serwer X dla tego wyświetlacza nasłuchuje w gnieździe domeny UNIX /tmp/.X11-unix/XD (więc jest dostępny tylko z hosta).:D.S
jest równoważne hostowi / unix: DS, gdzie host jest lokalną nazwą hosta.: 0.0 oznacza, że mówimy o pierwszym ekranie dołączonym do pierwszego wyświetlacza w lokalnym hoście
Czytaj więcej tutaj i tutaj i tutaj .
Ze strony podręcznika X (7):
źródło
/dev/tty1
), mam puste pole$DISPLAY
.:0
za$DISPLAY
.Istniejące odpowiedzi nie odnoszą się do szerszego obrazu.
Jeśli nie korzystasz ze środowiska graficznego (tj. Logujesz się na konsoli systemowej bez systemu Windows itp. Lub logujesz się zdalnie z terminala tekstowego za pośrednictwem SSH lub podobnego, na przykład z komputera z systemem Windows z uruchomionym programem PuTTY), GUI nie jest zaangażowane i
DISPLAY
zwykle nie jest ustawione. Jedynym sposobem komunikowania się z komputerem jest linia poleceń (choć mogą istnieć sposoby przestawienia się na sesję GUI, jeśli wiesz jak).Jeśli logujesz się na konsoli za pomocą interfejsu graficznego (w systemie Ubuntu, zwykle używany jest moduł powitalny GDM) lub używasz terminala graficznego (na przykład z komputera z systemem Windows z uruchomionym oprogramowaniem eXceed lub mobaX lub z oprogramowania zdalnego pulpitu, takiego jak klient VNC),
DISPLAY
Zmienna jest konfigurowana przez program, który zarządza sesją graficzną w celu wskazania klientom graficznym, z którymi urządzeniami We / Wy się połączyć.Tradycyjnie w GUI na komputerze Ubuntu działała X.org, implementacja X11, choć ostatnio firma Canonical wprowadziła zmodernizowany zamiennik o nazwie Mir; a jeszcze bardziej wierzę, że Mir zostanie porzucony na rzecz innego projektu o zasadniczo podobnych celach, zwanego Wayland . Zamienniki te mają na celu zmniejszenie złożoności pełnego stosu X11, do którego tutaj nie będziemy wchodzić - są zgodne z tą samą
DISPLAY
konwencją, o której przecież mówimy tutaj.Na X11 hostem
DISPLAY
może być serwer zdalny, a komputer Ubuntu byłby używany jako „terminal graficzny” do uzyskiwania dostępu do plików i programów na tym serwerze zdalnym (w takim przypadku komputer jest „serwerem” obsługującym klawiaturę , mysz i jedno lub więcej urządzeń wyświetlających do programów „klienckich” działających na zdalnym ... serwerze). Częściej serwer X11 (lub Mir lub Wayland) i programy klienckie (menedżer pulpitu i różne klienty graficzne, takie jak przeglądarka internetowa, klient poczty e-mail, program kalendarza itp.) Działają na komputerze. Wskazuje na to część „serwerowa”DISPLAY
wartości, która w tym ostatnim przypadku jest zazwyczaj pusta (co implikuje wartość domyślnąlocalhost
).Serwer X11 może uruchamiać jedną lub więcej sesji graficznych - na przykład logowanie do konsoli i zdalna sesja VNC mogą być uruchomione w tym samym czasie. W takim przypadku (jeśli są zarządzane przez tę samą instancję serwera X11), masz więcej niż jeden „ekran” w kategoriach X11. W praktyce jedna sesja (jedno zdarzenie logowania i instancja pulpitu spawnowana z tego) to jeden ekran w X11.
Jeden taki wyświetlacz może mieć jeden lub więcej ekranów. Tradycyjnie oznaczało to jeden monitor, chociaż oryginalna architektura miała pewne niefortunne cechy, takie jak niemożność przeniesienia okna z jednego ekranu na drugi. Dodatki, takie jak Xinerama i Xrandr, jeszcze bardziej zawiedli sytuację do tego stopnia, że jeden ekran często łączy wiele monitorów na różne sposoby.
Jeśli grałeś na systemach z wieloma monitorami, prawdopodobnie odkryłeś, że możesz rozmieszczać monitory na różne sposoby i otrzymać prostokątny obszar, w którym monitory wyświetlają niektóre jego części, a inne nie są przypisane do żadnego monitora. Jest to „ekran”, który tworzy X11, a jeśli masz więcej niż jedną kartę graficzną, możesz mieć wiele z tych ekranów, z których każdy jest przypisany do jednego lub więcej monitorów (lub teoretycznie działa bez monitora; Xvfb wykorzystuje to, aby umożliwić możesz uruchomić X11 bez żadnych monitorów, po prostu mapując GUI do regionu pamięci dla dowolnego celu).
źródło
Od https://help.ubuntu.com/community/EnvironmentVariables :
Zmienna - WYŚWIETLACZ
Przykład wartości:
Po co to jest?
źródło
: 0,0 oznacza wyświetlaną liczbę 0 i numer ekranu 0
W przypadku błędu w Twoim WYŚWIETLACZU i to nie dzieje się normalnie
Niektóre samouczki i zasoby można znaleźć tutaj:
źródło