Ssh

如何將選項卡名稱設置為我連接到的遠端主機的別名主機名?

  • June 7, 2014

您可能知道,預設情況下,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嗎?


更新 2014 年 6 月 6 日星期五 21:58:04 ICT

發生了一些非常奇怪的事情:看起來這只發生在 AWS 實例上。對於其他主機,登錄後選項卡名稱仍然存在。

PS1在 AWS 實例上:

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

PS1在其他主機上:

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

我還嘗試將PS1AWS 上的變數設置為工作主機的值,但沒有幫助。

那應該是因為在登錄到遠端 shell 會話時,該伺服器的 PS1 正在向您發送相同的\033]0;title\007命令序列,這會使您的終端程序攔截並相應地顯示。在本地工作站上編輯 PS1 真的沒有任何效果。

我有類似的要求,我所做的是在遠端 shell 的 bashrc 上,我放瞭如下內容

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

工具是我想用來辨識標題的指定名稱。實際上,標題在終端中正確顯示,命令提示符是我通常擁有的。

引用自:https://unix.stackexchange.com/questions/134787