RHEL6 && OEL6 $DISPLAY 啟動時如何決定?

RHEL6 && OEL6 $DISPLAY 啟動時如何決定?

我在 OEL6 伺服器上遇到不一致的 $DISPLAY 變量,這導致了相當多的問題套接字檔有問題

我發現關於實際設定環境變數 $DISPLAY 的內容很少,我知道它的作用(或多或少)以及如何在 shell 中手動設定它,我不知道的是當系統正在啟動時。

所以

GDM 環境變數 $DISPLAY 設定的方式和位置以及如何強制 GDM 為 :0.0?

注意:我不是在尋找,export DISPLAY=:0.0因為在這種情況下這沒有任何用處。

答案1

在人身上X(7)有一節顯示名稱其中指出:

在 POSIX 系統上,預設顯示名稱儲存在 DISPLAY 環境變數中。此變數由 xterm 終端模擬器自動設定。

接下來:

最後,大多數 X 程式接受命令列選項 -display displayname 來暫時覆蓋 DISPLAY 的內容。這最常用於在另一個人的螢幕上彈出窗口,或作為「遠端 shell」命令的一部分來啟動指向您的顯示器的 xterm。

男人為了X伺服器(1)我們有關於選項的資訊:

:顯示號碼 X 伺服器依照給定的顯示編號運行,預設為 0。請參閱 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}

相關內容