在我的本地终端上,我具有TERM = konsole-256color,但并非我连接的所有远程计算机都具有此定义。
是否可以使ssh更改远程计算机上的TERM?仅通过更改本地桌面上的配置,而无需更改远程计算机上的.bash *脚本?
在我的本地终端上,我具有TERM = konsole-256color,但并非我连接的所有远程计算机都具有此定义。
是否可以使ssh更改远程计算机上的TERM?仅通过更改本地桌面上的配置,而无需更改远程计算机上的.bash *脚本?
Answers:
我已将以下别名添加到我的.bashrc文件中。它使用OG的答案,但将其包装为别名。奇迹般有效 ;)
# Force xterm-color on ssh sessions
alias ssh='TERM=xterm-color ssh'
ssh:
ssh reads ~/.ssh/environment, and adds lines of the format
“VARNAME=value” to the environment if the file exists and users are
allowed to change their environment. For more information, see the
PermitUserEnvironment option in sshd_config(5).
编辑:
老鼠,我希望它可以在本地,但是,如果有意愿,那就有办法了。人ssh_conf:
SendEnv
Specifies what variables from the local environ(7) should be sent
to the server. Note that environment passing is only supported
for protocol 2. The server must also support it, and the server
must be configured to accept these environment variables. Refer
to AcceptEnv in sshd_config(5) for how to configure the server.
Variables are specified by name, which may contain wildcard char-
acters. Multiple environment variables may be separated by
whitespace or spread across multiple SendEnv directives. The
default is not to send any environment variables.
根据接收端sshd的配置,这可能会或可能不会满足“不进行远程文件修改”的要求。
这是我刚刚提出的快速又肮脏的解决方案。我希望有更好的东西。我想我可以改用Shell脚本。调整TERM
值留给读者练习。
# To move into a separate plugin...
function ssh {
if [[ "${TERM}" = screen* || konsole* ]]; then
env TERM=screen ssh "$@"
else
ssh "$@"
fi
}
理想情况下,它将执行诸如检查另一端的TERM之类的操作,使用这些ControlPersist
填充物来防止多个连接的长时间延迟。
$TERM
使用if
/ else
构造检查特定的值,而是使用$(echo -n "$TERM" | sed -e s/tmux/screen/)
无条件地用更普遍接受的“屏幕”类型替换本地术语中有问题的“ tmux”(本文来源)。