当我第一次启动screen
会话时,X-display 可以正常工作。也就是说,我可以启动 X-apps,例如xterm
等。
但是,当我screen
从不同的 X 重新连接上一个会话时,X-display 不再起作用。例如,如果我启动xterm
,我将得到:
xterm: Xt error: Can't open display: localhost:10.0
但是,我的 X-display(localhost:10.0)只有在我退出/暂停重新连接会话时才能正常工作screen
。也就是说,它在重新连接会话之外工作screen
,但在内部不工作。
如何使我的 X-display 在重新连接screen
会话中也能工作?
答案1
在重新连接屏幕会话之前,
env | grep -E "SSH_|DISPLAY|XAUTHORITY" | sed -e "s/ .*//" > ~/.scrrc
(额外的sed
是从 SSH_CLIENT 和 SSH_CONNECTION 中删除额外的参数,因为 bash 变量赋值不能包含未转义的空格。感谢 Velda 和 ruud 留下的修正意见。)或者,实际上,只需这样做就可以了:
env | grep -E "SSH_AUTH|DISPLAY|XAUTHORITY" > ~/.scrrc
重新连接后,在每个 screen 会话中,
source ~/.scrrc
将它们定义为别名,以方便每次输入。