
我在 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}