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

相关内容