Bash

如何讓終結者在標題欄中顯示遠端主機名?

  • March 11, 2016

當我通過 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 是要走的路……

以供參考:

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