使 LocalCommand 仅在交互使用时设置屏幕窗口标题?

使 LocalCommand 仅在交互使用时设置屏幕窗口标题?

设置

我在本地计算机上运行 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()函数),而不是在用于自动完成时执行?

相关内容