設定
ローカル マシンで screen を実行し、異なる screen ウィンドウを使用して異なるホストに接続します。ssh プロセス中にウィンドウ名をホスト名に自動的に変更できれば便利です。
アプローチ
私は以下の 2 つのアプローチのさまざまなバリエーションを試しました。
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^[\\\\
質問
ホストに接続するときにのみ(または関数)を実行でき、自動補完には使用されない$TERM == screen
ような条件( のチェックに加えて)はありますか?LocalCommand
ssh()