使 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()函數),而不是在用於自動完成時執行?

相關內容