接続しているリモートホストのエイリアスホスト名にタブ名を設定するにはどうすればよいですか?

接続しているリモートホストのエイリアスホスト名にタブ名を設定するにはどうすればよいですか?

ご存知のように、デフォルトでは、AWS インスタンスのホスト名は、ip-12-34-56-78.us-west-2.compute.internalそのホストに ssh するとタブ名が次のように変更されますroot@ip-12-34-56-78.

私は以下を持っているので~/.ssh/config

Host mail.domain.com
    Hostname 1.2.3.4
    User root

Host web.domain.com
    Hostname 5.6.7.8
    User root

タブ名を(「実際の」ホスト名の代わりに)私が接続しているリモートホストの「エイリアス」ホスト名に変更する方法があるかどうか疑問に思います。

SSHを使用するときのiTermタブのタイトル


私の現在のPS1設定:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

SSHラッパーを次に追加してみました~/.bashrc

ssh() {
    echo -ne "\033]0;${@: -1}\007"
    exec ssh $@
}

次に、. ~/.bashrc以下を実行してテストしますssh web.domain.com

  • しかし、つながる:タブ名がweb.domain.com期待どおりに変更されました。
  • いつ接続済み:上書きされましたroot@ip-5-6-7-8

なぜ?ここに関連する内容はありますかPS1


アップロード日: 6月 6日 金曜日 21:58:04 ICT 2014

非常に奇妙なことが起こっています。 AWS インスタンスでのみ発生するようです。他のホストでは、ログイン後もタブ名が保持されます。

PS1AWS インスタンスでは:

# echo $PS1
[\u@\h \W]\$

PS1他のホストから:

~ echo $PS1
\[\]\[\][\[\]\t\[\]] \u\[\]@\[\]\h\[\]\[\]:\[\]\w\[\] \[\]

PS1また、AWSの変数をジョブホストの値に設定しようとしましたが、役に立ちませんでした。

答え1

これは、リモートシェルセッションにログインした後、サーバーのPS1が同じ\033]0;title\007コマンドシーケンスをユーザーに再送信し、ターミナルプログラムがそれを傍受してそれに応じて表示するためです。ローカルワークステーションでPS1を編集することは実際には効果がありません。

同様の要件がありましたが、リモートシェルのbashrcで次の内容を入力しました。

PS1="\033]0;(tools)\007\015[\u@\h \W]# "

このツールは、タイトルを識別するために使用したい指定された名前です。実際、端末ではタイトルが正しく表示されますが、コマンドプロンプトは私が主に使用するものです。

関連情報