![Terminatorにタイトルバーにリモートホスト名を表示させるにはどうすればよいですか? [コピー]](https://linux33.com/image/85375/Terminator%E3%81%AB%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%83%90%E3%83%BC%E3%81%AB%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
LinuxシステムにSSHで接続すると、Terminatorのタイトルバーにuser@hostnameが表示されます。ここで、ホスト名はSSHで接続するコンピュータです。~から、SSH経由で接続するコンピュータの代わりに入力する(つまり、タイトルバーはリモートデバイス$ PS1の代わりにローカルデバイスからミラーリングされます。)同時に4台のコンピュータすべてにSSHで接続してプロンプトを表示できない場合は非常に混乱します(すべてのコンピュータのタイトルバーが同じであるため) !).
Terminatorに正しいホスト名を表示させるにはどうすればよいですか?
答え1
ユーザーは確かにプロンプトをカスタマイズし、端末のタイトルを更新することができますが、ほとんどはデフォルトのシェル動作を使用します。
ローカルコンピュータがプロンプトの副作用としてタイトル文字列を設定し、リモートコンピュータがタイトルを変更しないようです。
これを考慮すると、たとえば、次のラッパースクリプトを使用して、リモートシステムの干渉なしにヘッダーを更新できますssh
。
#!/bin/bash
# trim parameters, leaving just the last (user@hostname or just hostname)
title=$(echo "$*" | sed -e 's/^.* //')
printf '\033]0;%s\007' "$title"
/usr/bin/ssh "$@"
実行可能ファイルのパスの前に置くと/usr/bin
呼び出すことができます。それ「ssh」を使用して、各リモートシステムにアクセスするときにヘッダー文字列を設定します。 SSHを終了すると、ローカルプロンプトはヘッダー文字列をローカルシステムにリセットします。
その後のコメントでは、OPは接続がIPアドレスに対して行われたと述べました。リモートコンピュータの場合持つホスト名を使用すると、プロセスがより明確になる(DNS以外の場合)、ローカルコンピュータのホスト名を収集できます/etc/hosts
。
参考までに:
- オペレーティングシステムの制御(XTerm制御シーケンス)
- 6.3.Xtermタイトルバーの動作(BashプロンプトHOWTO)