As respostas existentes não conseguem abordar a imagem mais ampla.
Se você não estiver usando um ambiente gráfico (ou seja, estiver efetuando login no console do sistema sem janelas, etc; ou se estiver efetuando login remotamente a partir de um terminal somente texto sobre SSH ou similar, como em um computador Windows executando o PuTTY), nenhuma GUI está envolvida e DISPLAY
normalmente não está definida. Seu único meio de comunicação com o computador é a linha de comando (embora possa haver maneiras de entrar em uma sessão da GUI, se você souber).
Se você estiver efetuando login no console com uma interface gráfica (no Ubuntu, normalmente o GDM greeter é usado) ou usando um terminal gráfico (como em um computador Windows executando o eXceed ou mobaX ou software de desktop remoto como um cliente VNC), DISPLAY
A variável é configurada pelo programa que gerencia sua sessão gráfica para indicar aos clientes gráficos a quais dispositivos de E / S se conectam.
Tradicionalmente, a GUI em um computador Ubuntu estava executando o X.org, uma implementação do X11, embora, mais recentemente, uma substituição modernizada chamada Mir fosse introduzida pela Canonical; e ainda mais recentemente, acredito que Mir será abandonada em favor de outro projeto com objetivos amplamente semelhantes, chamados Wayland . Essas substituições visam reduzir a complexidade de uma pilha X11 completa, na qual não entraremos aqui - elas aderem à mesma DISPLAY
convenção, que é afinal o que estamos discutindo aqui.
No X11, a parte do host DISPLAY
poderia ser um servidor remoto, e você usaria o computador Ubuntu como um "terminal gráfico" para acessar arquivos e programas nesse servidor remoto (nesse caso, o computador é o "servidor" que serve o teclado , um mouse e um ou mais dispositivos de exibição para programas "clientes" em execução no servidor ... remoto). Mais comumente, o servidor X11 (ou Mir ou Wayland) e os programas clientes (um gerenciador de desktop e vários clientes gráficos, como um navegador da Web, um cliente de email, um programa de calendário etc.), todos são executados no seu computador. Isso é indicado pela parte "server" do DISPLAY
valor, que no último caso geralmente está vazio (o que implica o valor padrão localhost
).
Um servidor X11 pode executar uma ou mais sessões gráficas - por exemplo, o login do console e uma sessão VNC remota podem estar em execução ao mesmo tempo. Nesse caso (se eles forem gerenciados pela mesma instância do servidor X11), você terá mais de uma "exibição" em termos do X11. Na prática, uma sessão (um evento de logon e a instância da área de trabalho gerada a partir disso) é uma exibição no X11.
Um desses monitores pode ter uma ou mais telas. Tradicionalmente, isso significava um monitor, embora a arquitetura original tivesse algumas características infelizes, como a incapacidade de mover uma janela de uma tela para outra. Complementos como o Xinerama e o Xrandr distorcem ainda mais a situação a ponto de uma tela conectar vários monitores de várias maneiras.
Se você tocou com sistemas de vários monitores, provavelmente descobriu que pode organizar os monitores de várias maneiras e acabar com uma área retangular na qual seus monitores exibem algumas partes dele e outras não são atribuídas a nenhum monitor. Essa é a "tela" que o X11 cria e, se você tiver mais de uma placa de vídeo, poderá ter várias dessas telas, cada uma atribuída a um ou mais monitores (ou, teoricamente, executando sem monitor; o Xvfb explora isso para permitir para executar o X11 sem nenhum monitor, basta mapear a GUI para uma região de memória para qualquer finalidade).
echo $DISPLAY
está imprimindo:0
NÃO:0.0