Answers:
X程序通过查看DISPLAY
环境变量来知道应该与哪个X会话进行对话。
首先,您需要找出DISPLAY
要在其上运行程序的X会话中设置的内容。为此,请echo $DISPLAY
在该X会话的X终端内发出命令。通常会得到类似:0.0
的输出。
比方说,你要启动的优秀节目xclock
在X会话的程序DISPLAY
是:0.0
,但你要在控制台做到这一点。然后,按Alt-Ctrl-F1切换到该控制台,然后键入:
DISPLAY=:0.0 xclock # variables set w/ a command are local to that command
然后,您可以通过按Alt-Ctrl-F7或Alt-Ctrl-F8(或其他一些F键,具体取决于您的Linux风格)返回X,然后观看那里的新壁钟。
实际上,您可以在同一台计算机上的任何Shell中执行上述命令(通过SSH,在任何X会话中,在任何控制台等上)– DISPLAY=:0.0
在命令之前指定的事实意味着该xclock
窗口将始终在其中弹出相同的X会话。
实际上,除了X程序会查看它之外,DISPLAY
变量没有什么特别的。通常,当您从X终端启动程序时,它们会在正确的位置启动,因为DISPLAY
已经为您设置好了。
除了使用上面的命令,您还可以通过先设置DISPLAY
,然后运行来将其分成两个部分xclock
。在这种情况下,DISPLAY
设置将一直持续到您关闭该外壳为止,并且从那里启动的所有后续X程序都将在相同的X会话中打开xclock
。
# variables set w/o a command are local to the shell,
export DISPLAY=:0.0 # unless exported
xclock
DISPLAY
它将默认设置为导出,因为它是由shell导入的(它对我zsh
和dash
我都有效,而无需使用export
)。但是,是的,如果你不能得到两行版本的工作,尝试更换DISPLAY=:0.0
用export DISPLAY=:0.0
。
通常,X客户端程序使用DISPLAY
环境变量来知道要连接到哪个X服务器显示。某些程序还接受命令行参数(-display
或类似的参数),该参数可用于覆盖DISPLAY
环境变量。