Cygwin ssh 未正确设置显示(额外:0)

Cygwin ssh not setting DISPLAY correctly (extra :0)

我在 Windows 7 上使用 Cygwin 通过 SSH 连接到 unix (RHEL 6) 服务器。当我这样做时,X 转发设置不正确:

(从 Windows 机器上的 Cygwin xterm 开始)

> echo $DISPLAY
:0
> ssh -Y myname@rhel.server.com
[enter password]
> echo $DISPLAY
localhost:52.0:0

如果我现在尝试启动任何 windowed 进程,我会收到一条错误消息:

> emacs
emacs: Cannot connect to X server localhost:52.0:0.
Check the DISPLAY environment variable or use '-d'.
Also use the 'xhost' program to verify that it is set to permit connections from your machine.

其他详细信息

'localhost'后面的数字(上例中的52)每次连接都不一样

如果我执行以下操作,

> export DISPLAY=localhost:52.0

(也就是说,我删除了尾随的“:0)然后这个确实解决了这个问题,并且window转发工作正常。

所以问题是:如何修复以便我不需要在每次连接时手动更改 DISPLAY 变量?

误报,让我很尴尬。结果我的 .profile(我从别人那里借来的,因为它包含大量对我们的开发环境有用的定制)包含这些行:

export DISPLAY
if [[ -z $DISPLAY ]]; then
    DISPLAY=my.machine.addr:0
elif echo $DISPLAY | grep -z -v ':0'; then
    DISPLAY=$DISPLAY:0
fi

瞧,注释掉 elif 分支就解决了问题。愿这对我们所有人来说都是一个教训,让我们知道在不知道其中包含什么的情况下复制别人的配置的危险。