$DISPLAY
环境变量是什么意思。我使用的是Ubuntu 13.10操作系统,使用的是/bin/bash shell,并且有两个显示器。
以下是我的问题:
在我的机器上(两个显示器上),命令
echo $DISPLAY
会打印出:0.0
。这代表什么意思?在哪些情况下
$DISPLAY
变量会为空或为NULL?是否有任何关于此主题的文章或教程可供参考?
$DISPLAY
环境变量是什么意思。在我的机器上(两个显示器上),命令echo $DISPLAY
会打印出:0.0
。这代表什么意思?
在哪些情况下$DISPLAY
变量会为空或为NULL?
是否有任何关于此主题的文章或教程可供参考?
hostname:D.S
在哪里:
主机名是运行X服务器的计算机的名称。省略主机名意味着本地主机。
D是一个序列号(通常为0)。如果有多个显示器连接到一台计算机上,可以进行变化。
S是屏幕编号。一个显示器实际上可以有多个屏幕。通常情况下,只有一个屏幕,默认为0。
值的示例
localhost:4
google.com:0
:0.0
hostname:D.S
意味着主机 hostname 上显示器 D 的屏幕 S; 此显示器的 X 服务器正在 TCP 端口 6000+D 监听。
host/unix:D.S
意味着主机 host 上显示器 D 的屏幕 S; 此显示器的 X 服务器正在 UNIX 域套接字 /tmp/.X11-unix/XD 上监听(因此仅可从主机访问)。
:D.S
等同于 host/unix:D.S,其中 host 是本地主机名。
:0.0 表示我们正在谈论连接到您本地主机上第一个显示器的第一个屏幕
请在 此处 support.objectplanet.com、此处 superuser.com 和 此处 docstore.mik.ua 阅读更多内容。
来自 X(7) man 页面:
从用���的角度来看,每个X服务器都有一个显示名称的形式: hostname:displaynumber.screennumber 应用程序使用这些信息来确定应该如何连接到服务器和默认情况下应该使用哪个屏幕(对于具有多个显示器的显示器): 主机名指定物理连接到显示器的机器的名称。如果没有提供主机名,则将使用与同一台计算机上的服务器进行通信的最有效方法。 显示号通常用于表示共享公共键盘和指针(鼠标、平板等)的显示器集合。大多数工作站往往只有一个键盘,因此只有一个显示器。然而,较大的多用户系统经常有几个显示器,以便可以同时完成多个人的图形工作。为了避免混淆,在启动该显示器的X服务器时,给该机器上的每个显示器分配一个显示号(从0开始)。显示号必须始终在显示名称中给出。 某些显示器在两个或更多监视器之间共享单个键盘和指针。由于每个监视器都有自己的窗口集,所以在启动该显示器的X服务器时,为每个屏幕分配一个屏幕编号(从0开始)。如果没有给出屏幕编号,将使用屏幕0。/dev/tty1
),我得到了空白的$DISPLAY
。 - Franklin Yu:0
作为$DISPLAY
。 - Franklin Yu:
到底是什么意思呢?它和 :0.0
是等价的吗? - user222949传统上,Ubuntu 计算机上的图形用户界面 (GUI) 运行的是 X.org,这是一个 X11 实现。然而,最近由 Canonical 推出了一种现代化的替代品叫做 Mir;而更近期,我相信 Mir 将被放弃,转而采用一个名为 Wayland 的项目,其目标与之类似。这些替代方案旨在减少完整 X11 栈的复杂性,我们不会在此展开讨论 —— 它们遵循相同的 DISPLAY
约定,这正是我们在此讨论的内容。
DISPLAY
的主机部分可以是远程服务器,您可以将Ubuntu计算机用作访问该远程服务器上的文件和程序的"图形终端"(在这种情况下,您的计算机是为运行在远程服务器上的"客户端"程序提供键盘、鼠标和一个或多个显示设备的"服务器")。更常见的情况是,X11(或Mir、Wayland)服务器和客户端程序(如桌面管理器和各种图形客户端,如Web浏览器、电子邮件客户端、日历程序等)都在您的计算机上运行。这由DISPLAY
值的"服务器"部分表示,在后一种情况下,通常为空(这意味着默认值localhost
)。DISPLAY
变量是如何设置的以及它在哪里设置吗?因为我知道这个变量在任何文件中都不存在。我猜想它是被每个进程继承的。例如,进程/usr/bin/plasmashell
已经设置了这个变量,而它的所有子进程(比如/usr/bin/plasma-systemmonitor
、/usr/bin/ksysguardd
)也会有相同的变量设置。 - Edgar Magallon变量- DISPLAY
值示例:
:0.0
localhost:10.0
terminal01:0.0
最近我一直在为自动在特定时间启动Firefox的一些脚本编写,以提醒我打卡和下班,因为我一直在家工作。我发现DISPLAY
变量是由显示管理器确定的,例如GDM3、LightDM等。我还发现:0
或:1
由AutomaticLogin确定。在GDM3中,如果我禁用了AutomaticLogin,那么我的DISPLAY
变量就是:1
。如果我启用了AutomaticLogin,DISPLAY
现在就是:0
。无论我连接多少个显示器到我的系统上,这些数字都不会改变。
#This line checks if automatic login is disabled in gdm3 and sets DISPLAY.
grep "# AutomaticLogin" /etc/gdm3/custom.conf >/dev/null && export DISPLAY=":1" || export DISPLAY=":0"
echo $DISPLAY
打印的是:0
而不是:0.0
。 - Chandrayya G K