web-dev-qa-db-ja.com

SSH接続を閉じた後、Mac OSXターミナルのタイトルを復元します

重複の可能性:
sshから戻ったときにOS Xで端末のタイトルを元のタイトルに戻すにはどうすればよいですか?

Mac OS XターミナルでSSH接続からログアウトするたびに、ウィンドウのタイトルに過去のログイン情報が表示されます。

私がウェブ上で検索しているのを見つけたほとんどの解決策は、 この質問 または この関連するブログ投稿 のようなコンエスケープシーケンスをいじることを含みます。

これはSSHの問題であり、ターミナルの問題ではないようです。そのため、これを行う簡単な方法があるかどうか疑問に思いました(SSHクライアントの構成を編集するのではないでしょうか?)。

18
elitalon

SSHの問題ではありません。問題は、リモートホストのシェルがエスケープシーケンスを送信してターミナルウィンドウのタイトルを設定するように構成されていることです。これはかなり一般的な設定です。リンク先の ブログ投稿 に記載されている解決策は正しいです。

最も簡単で直接的な解決策は、同じリモートシェルを構成して、ログアウト時にウィンドウのタイトルをリセットすることです。たとえば、リモートシェルがbashの場合、これを〜/ .bash_logoutに配置します。

printf '\e]0;\a'

または、ローカルシェルでウィンドウのタイトルを何か便利なものに更新してもらいたい場合は、それを実行します。 ssh接続が終了すると、ローカルシェルはウィンドウタイトルを古い値のままにするのではなく、別のタイトルに設定します。例えばこれを〜/ .bashrcに入れてください:

PS1='\[\e]1;\s\$ \W\a\e]2;\u@\h\a\]'"$PS1"

これにより、ユーザーとホスト名がウィンドウタイトル(通常はリモートシェルが実行するように構成されているもの)に配置され、タブタイトルが設定されてシェルの名前とタイプ(通常のユーザーまたはルート)と現在の作業ディレクトリが表示されます。

〜/ .bash_profile(または〜/ .profile)がまだない場合は、作成して〜/ .bashrcを実行し、〜/ .bashrcがログインシェルと非ログインシェルに適用されるようにします。

if [ -f $HOME/.bashrc ]; then
    . $HOME/.bashrc
fi
26
Chris Page