Ssh
修復 SSH 遠端登錄到另一台機器後的終端標題
現在我正在使用單行 perl 程式碼來更改終端欄的標題,
print("\e]0;@ARGV\7");
但是每次我 ssh 到另一台遠端機器後,主機都會修改標題(對此我並不特別煩惱)。但是在我退出連接後,修改後的標題仍然存在。有沒有辦法來解決這個問題?本質上,我想在本地操作時為我的終端設置一個固定的標題。
我主要在 CentOS 或 Debian 下使用 xfce 終端和終結器。謝謝。
編輯
另一個微妙之處在於,與其讓所有終端都同名,我更願意自由地即時編輯它們的標題,但只禁止 SSH 會話修改我編輯的內容。
我不知道視窗標題,但我一直試圖讓我的系統在終止 ssh 會話時做一些事情——實際上是在終止 ssh 會話之後。簡而言之:它不是那樣工作的。基本上你有三個選擇:
- 圍繞 ssh 編寫一個包裝器,即一個名為的可執行 shell 腳本
ssh
,它優先/usr/bin/ssh
於您的 $PATH 中包含exec /usr/bin/ssh $@
中間某處的行。這使您可以讓您的 shell 在執行有效的 ssh 二進製文件之前和之後執行一些操作,同時將成本降至最低。- 針對您選擇的 SSH 源編寫一個更新檔,為您提供一個清理鉤子,該鉤子執行通過命令行或某些配置設置傳遞的 shell 命令。這就是我們想要的。
- 已
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()
希望有幫助。