Bash
如何讓終結者在標題欄中顯示遠端主機名?
當我通過 SSH 連接到我的任何一台 Linux 設備時,Terminator 上的標題欄會顯示 user@hostname,其中主機名是我通過 SSH 連接的電腦,而不是我通過 SSH 連接到的電腦(即標題欄鏡像$PS1 來自本地設備而不是遠端設備)。如果我同時通過 SSH 連接到所有 4 台電腦並且看不到它們的提示(因為它們的所有標題欄都是相同的!),這會讓人非常困惑。
如何讓終結者顯示正確的主機名?
雖然使用者當然可以自定義他們的提示(並使其更新終端的標題),但大多數使用預設的 shell 行為。
聽起來好像您的本地機器將標題字元串設置為提示的副作用,而遠端機器沒有更改標題。
鑑於此,您可以在不受遠端機器干擾的情況下更新標題,例如,使用
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
. 最終,DNS 是要走的路……以供參考:
- 作業系統控制(XTerm 控制序列)
- 6.3. Xterm 標題欄操作(Bash Prompt HOWTO)