RHEL6 && OEL6 $DISPLAY 如何在啟動時確定?
我在我的 OEL6 伺服器上遇到了不一致的 $DISPLAY 變數,這對套接字文件造成了很大的麻煩。
我發現實際上設置環境變數 $DISPLAY 的內容非常少,我知道它的作用(或多或少)以及如何在 shell 中手動設置它,我不知道它是如何設置的系統正在啟動。
所以
GDM 環境變數 $DISPLAY 設置的方式和位置以及如何強制 GDM 設置為:0.0?
注意:我不是在尋找,
export DISPLAY=:0.0
因為在這種情況下不會有任何用處。
在 man X(7)中有一個顯示名稱部分,其中指出:
在 POSIX 系統上,預設顯示名稱儲存在 DISPLAY 環境變數中。此變數由 xterm 終端仿真器自動設置。
接下來:
最後,大多數 X 程序接受 -display displayname 的命令行選項來臨時覆蓋 DISPLAY 的內容。這最常用於在另一個人的螢幕上彈出視窗或作為“遠端外殼”命令的一部分來啟動指向您顯示器的 xterm。
man for Xserver(1)我們有關於選項的資訊:
:displaynumber X 伺服器作為給定的 displaynumber 執行,預設為 0。如果要在主機上同時執行多個 X 伺服器,每個伺服器必須有一個唯一的顯示編號。請參閱 X(7) 手冊頁的 DISPLAY NAMES 部分以了解如何指定客戶端應嘗試使用的顯示編號。
看一下:/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 的選項中獲取它。初始化(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}