它是什么DISPLAY=:0
以及它意味着什么?
这不是命令,是吗? (gnome-panel
是一个命令。)
DISPLAY=:0 gnome-panel
答案1
DISPLAY=:0 gnome-panel
gnome-panel
是一个 shell 命令,它在环境变量DISPLAY
设置为 的情况下运行外部命令:0
。 shell 语法仅在指定命令的持续时间内设置环境变量。大致相当于.VARIABLE=VALUE COMMAND
VARIABLE
(export VARIABLE=VALUE; exec COMMAND)
环境变量DISPLAY
告诉 GUI 程序如何与 GUI 进行通信。一个Unix系统可以运行多个X 服务器,即多重显示。这些显示器可以是物理显示器(一台或多台显示器),也可以是远程显示器(通过网络转发,例如通过 SSH),也可以是虚拟显示器,例如Xvfb等。指定显示的基本语法是;如果省略该部分,则显示为本地显示。HOST:NUMBER
HOST
显示器从 0 开始编号,:0
第一个启动的本地显示器也是如此。在典型设置中,这是计算机显示器上显示的内容。
与所有环境变量一样,DISPLAY
它是从父进程继承到子进程的。例如,当您登录到 GUI 会话时,登录管理器或会话启动程序会进行DISPLAY
适当设置,并且该变量将由会话中的所有程序继承。当您使用 X 转发打开 SSH 连接时,SSH 会将DISPLAY
环境变量设置为转发的连接,以便您在远程计算机上运行的程序显示在本地计算机上。如果没有转发的 X 连接(或者因为 SSH 配置为不执行此操作,或者因为没有本地 X 服务器),则 SSH 不会设置DISPLAY
。
显式设置DISPLAY
会导致程序显示在通常不会显示的位置。例如,DISPLAY=:0 gnome-panel
在 SSH 连接中运行会在远程计算机的本地显示器上启动一个 Gnome 面板(假设有一个并且用户有权访问它)。显式设置DISPLAY=:0
通常是从本地会话外部访问计算机本地显示的一种方法,例如通过远程访问或从 cron 作业。
答案2
它是一个环境变量,仅传递给该程序,而不是传递给整个 shell。当您在命令所在的同一行设置变量时,就会发生这种情况。
X11 程序需要知道在哪里显示窗口,因为它是一个客户端/服务器系统,并且您可以在远程计算机上显示。这仅仅意味着使用本地计算机上的第一个显示器。
这通常是在登录桌面环境时自动设置的。例如,打开图形终端并输入echo $DISPLAY
。