Le risposte esistenti non riescono ad affrontare il quadro generale.
Se non si utilizza un ambiente grafico (ad es. Si accede alla console di sistema senza finestre, ecc. Oppure si accede in remoto da un terminale di solo testo su SSH o simile, ad esempio da un computer Windows che esegue PuTTY) nessuna GUI è coinvolta e DISPLAY
in genere non sarà impostata. L'unico mezzo per comunicare con il computer è la riga di comando (anche se ci possono essere modi per ruotare in una sessione della GUI se sai come).
Se si accede alla console con un'interfaccia grafica (su Ubuntu, in genere viene utilizzato il greeter GDM) o si utilizza un terminale grafico (come da un computer Windows che esegue eXceed o mobaX o un software desktop remoto come un client VNC) il DISPLAY
viene impostata dal programma che gestisce la sessione grafica per indicare ai client grafici a quali dispositivi I / O connettersi.
Tradizionalmente, la GUI su un computer Ubuntu eseguiva X.org, un'implementazione X11, sebbene più recentemente, una sostituzione modernizzata chiamata Mir fu introdotta da Canonical; e ancora più di recente, credo che Mir sarà abbandonato a favore di un altro progetto con obiettivi sostanzialmente simili chiamato Wayland . Queste sostituzioni hanno lo scopo di ridurre la complessità di uno stack X11 completo, che non entreremo qui - aderiscono alla stessa DISPLAY
convenzione, che è dopo tutto ciò di cui stiamo discutendo qui.
Su X11, la parte host di DISPLAY
potrebbe essere un server remoto e useresti il tuo computer Ubuntu come "terminale grafico" per accedere a file e programmi su quel server remoto (nel qual caso il tuo computer è il "server" che serve una tastiera , un mouse e uno o più dispositivi di visualizzazione ai programmi "client" in esecuzione sul server remoto ...). Più comunemente, il server X11 (o Mir o Wayland) e i programmi client (un desktop manager e vari client grafici come un browser web, un client di posta elettronica, un programma di calendario, ecc.) Sono tutti eseguiti sul tuo computer. Ciò è indicato dalla parte "server" del DISPLAY
valore, che in quest'ultimo caso è in genere vuota (il che implica il valore predefinito localhost
).
Un server X11 può eseguire una o più sessioni grafiche, ad esempio il login della console e una sessione VNC remota potrebbero essere in esecuzione contemporaneamente. In questo caso (se sono gestiti dalla stessa istanza del server X11) hai più di un "display" in termini X11. In pratica, una sessione (un evento di accesso e l'istanza desktop generata da questo) è un display in X11.
Uno di questi display può avere uno o più schermi. Tradizionalmente, questo significava un monitor, sebbene l'architettura originale avesse alcuni tratti sfortunati come l'incapacità di spostare una finestra da uno schermo all'altro. Componenti aggiuntivi come Xinerama e Xrandr hanno ulteriormente confuso la situazione al punto in cui uno schermo collega spesso più monitor in vari modi.
Se hai giocato con sistemi a più monitor, probabilmente hai scoperto che puoi disporre i monitor in vari modi e finire con un'area rettangolare in cui i monitor visualizzano alcune parti di esso e altre parti non sono assegnate a nessun monitor. Questo è lo "schermo" creato da X11 e se si dispone di più di una scheda video, è possibile avere più di questi schermi, ciascuno assegnato a uno o più monitor (o in teoria, in esecuzione senza monitor; Xvfb lo sfrutta per consentire per eseguire X11 senza monitor, semplicemente mappando la GUI su un'area di memoria per qualsiasi scopo).
echo $DISPLAY
sta stampando:0
NOT:0.0