設定
我在本機電腦上執行 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()
函數),而不是在用於自動完成時執行?