Ssh

修復 SSH 遠端登錄到另一台機器後的終端標題

  • September 1, 2021

現在我正在使用單行 perl 程式碼來更改終端欄的標題,

print("\e]0;@ARGV\7");

但是每次我 ssh 到另一台遠端機器後,主機都會修改標題(對此我並不特別煩惱)。但是在我退出連接後,修改後的標題仍然存在。有沒有辦法來解決這個問題?本質上,我想在本地操作時為我的終端設置一個固定的標題。

我主要在 CentOS 或 Debian 下使用 xfce 終端和終結器。謝謝。

編輯

另一個微妙之處在於,與其讓所有終端都同名,我更願意自由地即時編輯它們的標題,但只禁止 SSH 會話修改我編輯的內容。

我不知道視窗標題,但我一直試圖讓我的系統在終止 ssh 會話時做一些事情——實際上是在終止 ssh 會話之後。簡而言之:它不是那樣工作的。基本上你有三個選擇:

  1. 圍繞 ssh 編寫一個包裝器,即一個名為的可執行 shell 腳本ssh,它優先/usr/bin/ssh於您的 $PATH 中包含exec /usr/bin/ssh $@中間某處的行。這使您可以讓您的 shell 在執行有效的 ssh 二進製文件之前和之後執行一些操作,同時將成本降至最低。
  2. 針對您選擇的 SSH 源編寫一個更新檔,為您提供一個清理鉤子,該鉤子執行通過命令行或某些配置設置傳遞的 shell 命令。這就是我們想要的。
  3. PROMPT_COMMAND評估 的輸出history。基本上是一種更通用和更醜陋的方法 1。

解決方法:在ssh和su命令之後添加一些函式~/.bashrc來做一些事情

function title()
{
  # change the title of the current window or tab
  echo -ne "\033]0;$*\007"
}

function ssh()
{
  /usr/bin/ssh "$@"
  # revert the window title after the ssh command
  title $USER@$HOST
}

function su()
{
  /bin/su "$@"
  # revert the window title after the su command
  title $USER@$HOST
}

注意:編輯 ~/.bashrc 後重啟 bash

例子:

# title is "user1@boxA"
ssh boxB  # auto changes title while on boxB to "user1@boxB"
exit
# title returns back to "user1@boxA" because of our title call in ssh()
su - user2 # auto changes title while switched user to user2: "user2@boxA"
exit
# title returns back to "user1@boxA" because of our title call in su()

希望有幫助。

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