我在 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 服务器,则每个服务器都必须具有唯一的显示编号。请参阅 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}