Ssh
如何將選項卡名稱設置為我連接到的遠端主機的別名主機名?
您可能知道,預設情況下,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
我想知道有沒有辦法將選項卡名稱更改為我連接到的遠端主機的“別名”主機名(而不是“真實”主機名):
我目前的
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\[\] \[\]
我還嘗試將
PS1
AWS 上的變數設置為工作主機的值,但沒有幫助。
那應該是因為在登錄到遠端 shell 會話時,該伺服器的 PS1 正在向您發送相同的
\033]0;title\007
命令序列,這會使您的終端程序攔截並相應地顯示。在本地工作站上編輯 PS1 真的沒有任何效果。我有類似的要求,我所做的是在遠端 shell 的 bashrc 上,我放瞭如下內容
PS1="\033]0;(tools)\007\015[\u@\h \W]# "
工具是我想用來辨識標題的指定名稱。實際上,標題在終端中正確顯示,命令提示符是我通常擁有的。