使用 ~.ssh/config 始终为某些主机设置 TERM=cygwin?

使用 ~.ssh/config 始终为某些主机设置 TERM=cygwin?

我在几台 Windows 服务器上使用 WinSSHd。要从我的 Mac(大概也是任何基于 Unix 的终端)访问它们,我需要将TERM环境变量设置为cygwin,例如:

TERM=cygwin ssh someserver.com

我还可以使用它.ssh/config来为该服务器设置某些默认值,例如不同的用户和非默认端口:

host someserver.com
    User SomeDifferentDude
    Port 22222

但是,我显然无法通过这种方式设置环境变量。man ssh_config无论如何,我在 中没有找到任何东西。有没有办法为每个主机设置默认终端仿真(和/或任何环境变量)?

答案1

您通常会在服务器端设置环境变量。

如果 WinSSHd 足够类似于 openssh(ssh 的常见 unix 实现),您可以定义一个环境文件(~/.ssh/environment在 unix 上)并将其放在TERM=cygwin那里。

您还可以在 shell 初始化文件中设置环境变量。既然您提到了 cygwin,那么这大概就是您的 cygwin 主目录的~/.bash_profile位置~。您应该有条件地设置它,以防您还在其他终端类型上使用 cygwin;例如,仅在通过 ssh 登录时设置它(再次假设 WinSSHd 与 openssh 足够相似):

if [ -n "$SSH_CLIENT" ]; then
  export TERM=cygwin
fi

答案2

事实证明有一个更好的解决方案——WinSSHd 支持 Unix 的terminfo格式,所以我所要做的就是将适当的terminfo文件(在 OS X 的情况下:xterm-color)复制到它的目录中,这样设置TERM=cygwin就变得没有必要了。

答案3

您可以使用SendEnv TERM将服务器上的 TERM 设置为与本地计算机上的 TERM 相同。

相关内容