Rhel

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

  • February 23, 2016

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

引用自:https://unix.stackexchange.com/questions/264196