RHEL6 && OEL6 Como o $ DISPLAY é determinado na inicialização?

1

Estou experimentando variáveis $ DISPLAY inconsistentes em meus servidores OEL6 que causaram um pouco de problemas com arquivos socket .

Eu encontrei surpreendentemente pouco sobre o que realmente define a variável de ambiente $ DISPLAY, eu sei o que ele faz (mais ou menos) e como configurá-lo manualmente no shell, O que eu não sei é como é definido quando o sistema está iniciando.

então

Como e onde é a variável de ambiente GDM $ DISPLAY definida e como posso forçar o GDM a: 0.0?

Observação: NÃO estou procurando export DISPLAY=:0.0 , já que isso não será de nenhuma utilidade neste caso.

    
por ChrisK 18.02.2016 / 22:58

1 resposta

3

No homem X (7) há uma seção Nomes que afirmam:

On POSIX systems, the default display name is stored in your DISPLAY environment variable. This variable is set automatically by the xterm terminal emulator.

e depois:

Finally, most X programs accept a command line option of -display displayname to temporarily override the contents of DISPLAY. This is most commonly used to pop windows on another person's screen or as part of a "remote shell" command to start an xterm pointing back to your display.

homem para o Xserver (1) , temos informações sobre Opções:

:displaynumber The X server runs as the given displaynumber, which by default is 0. If multiple X servers are to run simultaneously on a host, each must have a unique display number. See the DISPLAY NAMES section of the X(7) manual page to learn how to specify which display number clients should try to use.

Dê uma olhada em: / etc / gdm / Init / Default (disponível no ArchLinux, então não tenho certeza se no sistema RHEL está disponível).

Mais alguns achados. DISPLAY é definido pelo programa xinit. xinit.c tem isso:

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 retirá-lo da opção passada para o xinit quando ele 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}
    
por 22.02.2016 / 15:38