Command-Line

為什麼 ssh 不轉回終端標題?

  • June 9, 2013

您可能知道,當您從 X 終端(rxvt、gnome-terminal…)通過 ssh 連接到伺服器時,ssh 會更改視窗標題以反映 user@host,不會將其改回。

網際網路上有許多解決此問題的技巧。我不是要另一個1。

我正在尋找的是解釋為什麼會這樣。所以我可以學會忍受它。為什麼 ssh 不設置標題?

用更 FITD 的方式說:如果 vim 可以做到,為什麼 ssh 不能?

1 …除非解釋是問題僅由 ssh 配置錯誤引起,在這種情況下,我歡迎解決該問題的方法。

終端中的視窗標題由嵌入在終端中執行的任何內容的輸出中的控製字元設置。ssh 沒有註意到這一點,因為它只是將遠端端生成的任何字元傳遞回客戶端的標準輸出。通常,大多數“設置視窗標題”的 UNIX/Linux 系統通過將控製字元嵌入 shell 的提示PS1變數中,或者在 main/etc/bash_profile或使用者的預設值$HOME/.bashrc$HOME/.bash_profile(或您選擇的 shell 使用的任何配置文件)中。此頁面描述瞭如何在許多不同的 shell 中執行此操作。

因此,解釋完之後,您登錄到設置了這些內容的遠端電腦,設置了視窗標題,並且視窗標題沒有“變回”的原因可能是因為您的本地電腦沒有這些嵌入在本地提示中的控製字元以重新設置視窗標題。換句話說,一旦這些控製字元設置了視窗標題,它們就不會自動取消設置。您必須再次實際輸出控製字元才能更改它,通常是將它們放在本地提示變數中。

在本地機器上執行的 VIM 可以從 X 伺服器查詢視窗標題(通過引用 中的視窗 ID $WINDOWID)並保存標題以在退出時恢復它。這可以通過 VIM 選項titletitlestring(參見參考資料:help 'title')來控制。ssh 客戶端似乎根本沒有這樣做,這也可能是因為 ssh 根本不直接管理視窗標題,它只是從遠端 shell 輸出字元。

編輯:感謝 Stephane Chazelas 在評論中對 VIM 標題行為的更正。

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