
Estou tendo variáveis $DISPLAY inconsistentes em meus servidores OEL6, o que causou bastante confusão.problemas com arquivos de soquete.
Descobri surpreendentemente pouco sobre o que realmente define a variável de ambiente $DISPLAY, sei o que ela faz (mais ou menos) e como configurá-la manualmente no shell. O que não sei é COMO ela é definida quando o o sistema está iniciando.
então
Como e onde a variável de ambiente $DISPLAY do GDM está definida e como posso forçar o GDM para: 0,0?
Nota: NÃO estou procurando, export DISPLAY=:0.0
pois isso não terá nenhuma utilidade neste caso.
Responder1
No homemX(7)há seçãoNomes de exibiçãoquais Estados:
Em sistemas POSIX, o nome de exibição padrão é armazenado na variável de ambiente DISPLAY. Esta variável é definida automaticamente pelo emulador de terminal xterm.
e a seguir:
Finalmente, a maioria dos programas X aceita uma opção de linha de comando -display displayname para substituir temporariamente o conteúdo de DISPLAY. Isso é mais comumente usado para abrir janelas na tela de outra pessoa ou como parte de um comando "shell remoto" para iniciar um xterm apontando de volta para sua tela.
homem paraServidor X(1)temos informações sobre opções:
:número de exibição O servidor X é executado como o número de exibição fornecido, que por padrão é 0. Se vários servidores X forem executados simultaneamente em um host, cada um deverá ter um número de exibição exclusivo. Consulte a seção DISPLAY NAMES da página de manual do X(7) para saber como especificar qual número de exibição os clientes devem tentar usar.
Dê uma olhada em: /etc/gdm/Init/Default (disponível no ArchLinux, então não tenho certeza se no sistema RHEL ele está disponível).
Mais algumas descobertas. DISPLAY é definido pelo programa xinit. xinit.c tem isto:
if (argc > 0 && (argv[0][0] == ':' && isdigit(argv[0][1])))
displayNum = *argv;
else
displayNum = *sptr++ = default_display;
(...)
static void
set_environment(void)
{
if (setenv("DISPLAY", displayNum, TRUE) == -1)
Fatal("unable to set DISPLAY");
}
Portanto, o xinit pode definir o valor padrão ou obtê-lo da opção passada para o xinit quando foi executado.xinit(1):
xinit [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]
E mais um. variável de ambiente pode ser definida pelo PAM. Por exemplo./etc/security/pam_env.conf
# Set the DISPLAY variable if it seems reasonable
#DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}