RHEL6 && OEL6 Как определяется $ DISPLAY при запуске?

Я испытываю непоследовательные переменные $ DISPLAY на моих серверах OEL6, которые вызвали немало проблем с файлами сокетов .

Я обнаружил удивительно мало того, что на самом деле устанавливает переменную среды $ DISPLAY, я знаю, что она делает (более или менее), и как вручную установить ее в оболочке. Что я не знаю, КАК она установлена, когда система запускается.

так

Как и где находится переменная среды GDM $ DISPLAY и как я могу заставить GDM: 0.0?

Примечание. Я НЕ ищу export DISPLAY=:0.0 как это не будет в этом случае использоваться.

В человеке X (7) есть раздел Display Names, который гласит:

В системах POSIX отображаемое имя по умолчанию сохраняется в переменной среды DISPLAY. Эта переменная устанавливается автоматически эмулятором терминала xterm.

и далее:

Наконец, большинство X-программ принимают параметр командной строки -display displayname, чтобы временно переопределить содержимое DISPLAY. Это чаще всего используется, чтобы всплывать окна на экране другого человека или как часть команды «удаленная оболочка», чтобы запустить xterm, обращаясь к вашему дисплею.

man для Xserver (1) у нас есть информация о параметрах:

: displaynumber Сервер X работает как заданный номер дисплея, который по умолчанию равен 0. Если несколько серверов X должны одновременно выполняться на хосте, каждый должен иметь уникальный номер дисплея. См. Раздел «НАЗВАНИЯ ДИСПЛЕЯ» на странице руководства X (7), чтобы узнать, как указать, какие клиенты с числовыми номерами следует пытаться использовать.

Взгляните на: / etc / gdm / Init / Default (доступно на ArchLinux, поэтому не уверен, что в системе RHEL он доступен).

Еще несколько выводов. DISPLAY устанавливается программой xinit. xinit.c имеет следующее:

 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"); } 

Таким образом, xinit может установить значение по умолчанию или взять его из опции, переданной в xinit, когда она была запущена. xinit (1) :

  xinit [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ] 

И еще один. переменная среды может быть установлена ​​PAM. Например. /etc/security/pam_env.conf

 # Set the DISPLAY variable if it seems reasonable #DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}