Eu sou novo no shell script. Não entendo qual é a $DISPLAY
variável ambiental.
Eu tenho o Ubuntu 13.10 e uso /bin/bash
shell. Eu tenho dois monitores.
Questões:
O comando
echo $DISPLAY
será impresso:0.0
na minha máquina (nos dois monitores). O que isto significa?Em quais casos a
$DISPLAY
variável ficará em branco ou NULL?Existem artigos ou tutoriais sobre isso?
xorg
environment-variables
Chandrayya GK
fonte
fonte
echo $DISPLAY
está imprimindo:0
NÃO:0.0
Respostas:
A palavra mágica no sistema de janelas X é DISPLAY. Um display consiste (simplificado) em:
Uma exibição é gerenciada por um programa de servidor, conhecido como servidor X. O servidor serve para exibir recursos para outros programas que se conectam a ele.
O servidor remoto sabe onde deve redirecionar o tráfego da rede X através da definição da variável de ambiente DISPLAY, que geralmente aponta para um servidor X Display localizado no computador local.
O valor da variável de ambiente de exibição é:
Onde:
hostname é o nome do computador em que o servidor X é executado. Um nome de host omitido significa o host local.
D é um número de sequência (geralmente 0). Pode variar se houver vários monitores conectados a um computador.
S é o número da tela. Um monitor pode realmente ter várias telas. Normalmente, há apenas uma tela, embora 0 seja o padrão.
Exemplo de valores
hostname:D.S
significa tela S na exibição D do nome do host; o servidor X deste monitor está escutando na porta TCP 6000 + D.host/unix:D.S
significa tela S na tela D do host host; o servidor X para esta exibição está escutando no soquete do domínio UNIX /tmp/.X11-unix/XD (portanto, é acessível apenas pelo host).:D.S
é equivalente a host / unix: DS, em que host é o nome do host local.: 0.0 significa que estamos falando da primeira tela anexada à sua primeira exibição no host local
Leia mais aqui e aqui e aqui .
Em uma página do manual do X (7):
fonte
/dev/tty1
), fiquei em branco$DISPLAY
.:0
para$DISPLAY
.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" doDISPLAY
valor, que no último caso geralmente está vazio (o que implica o valor padrãolocalhost
).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).
fonte
Em https://help.ubuntu.com/community/EnvironmentVariables :
Variável- DISPLAY
Exemplo de valores:
Para que serve?
fonte
: 0.0 significa o número de exibição 0 e o número de tela 0
Em caso de erro no seu $ DISPLAY e isso não acontece normalmente
Alguns tutoriais e recursos podem ser encontrados aqui:
fonte