web-dev-qa-db-ja.com

sshから戻ったときにOSXで端末のタイトルを元のタイトルに戻すにはどうすればよいですか?

OS Xから始めて、私はfoo(Linuxボックス)にSSH接続します。ターミナルのタイトルがfooに変わります。次に、bar(別のLinuxボックス)にSSH接続します。ターミナルのタイトルがバーに変わります。バーからログアウトします。ターミナルのタイトルがfooに変わります。 fooからログアウトします。私の端末のタイトルは(元のタイトルに戻るのではなく)fooのままです。 LinuxボックスからログアウトしてLinuxボックスに戻ると正しく機能するため、問題は明らかに端末にはありません。私はvimで同じ問題を抱えているので、おそらくsshではありません。私の心の中でそれはシェルを去ります。私はBASHを使用しています。環境を見ると、LinuxボックスとOSXボックスの間に大きな違いは見られません。どちらもxtermのTERMを使用しています。

12
Chas. Owens

追加する

export Prompt_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

私の.bash_profileに問題を修正しました。

プロンプトが表示されるたびに、Prompt_COMMANDの文字列が実行されているように見えます。マニュアルページから:

Prompt_COMMAND

設定されている場合、値は各プライマリプロンプトを発行する前にコマンドとして実行されます。

14
Chas. Owens

私はこの問題のより良い解決策を見つけました。 OSXは、このシステム全体の構成を使用します。

Prompt_COMMAND="update_terminal_cwd${Prompt_COMMAND:+; $Prompt_COMMAND}"

関数update_terminal_cmd/etc/bashrc_Apple_Terminalで宣言されています。したがって、Prompt_COMMANDをリセットしてターミナル設定を壊したくない場合は、~/.profileまたは~/.bashrcの最後に次の行を追加できます。

my_update_terminal_cwd() {
    update_terminal_cwd # call system wide function
    printf '\e]0;\a'    # reset additional title after SSH session
}

Prompt_COMMAND="my_update_terminal_cwd${Prompt_COMMAND:+; $Prompt_COMMAND}"

例:

SSHセッションの前

SSHセッションが進行中です-タイトルがリモートホスト名に設定されています

SSHセッション後-タイトルが修正されました

0
Mike Miklin