设置
我在本地计算机上运行 screen 并使用不同的 screen 窗口连接到不同的主机。在 ssh 过程中自动将窗口名称更改为主机名会很好。
方法
我尝试了以下两种方法的不同变体:
1)LocalComand
在ssh配置文件中使用:
Host *
PermitLocalCommand yes
LocalCommand '[ "${TERM:0:6}" == "screen" ] && printf "\ek@%h\e\\"
2) 创建自定义 bash 函数:
# function to set screen name based on host and reset on exit
function ssh() {
echo -e '\033k'@$1'\033\\'
/usr/bin/env ssh -Y "$@"
echo -e '\033k'local'\033\\'
}
问题
这两种方法都有效,但它们似乎也会干扰自动完成等功能:
$ scp user@host:~/.s<tab>
...o^[\\\\ ...cal^[\\\\
问题
是否可以使用某些条件(除了检查 if 之外$TERM == screen
)仅在连接到主机时才允许执行LocalCommand
(或ssh()
函数),而不是在用于自动完成时执行?