從 iTerm2 遠端登入後如何修復 shell 提示符號 ( ps1 ) 奇怪的轉義序列

從 iTerm2 遠端登入後如何修復 shell 提示符號 ( ps1 ) 奇怪的轉義序列

從 ubuntu 14.04 登入遠端電腦後,我觀察到以下奇怪的提示。這只發生在我使用 ubuntu gui 終端而不是通過 putty 時。有什麼建議來修復它嗎?

這是登入遠端伺服器後的輸出。

在此輸入影像描述

答案1

這確實是 iTerm2 整合。 iTerm2 的動態測試應該在其整合腳本內完成,而不是刪除它。注意:請參閱下面有關 ssh 的警告。

iterm 會回應 ANSI 序列,無論哪個 shell/ssh 處於活動狀態,序列都有效。對於想要自己推出的人來說,順序是printf '\x1b[1337n'

你的 .bashrc (或你使用的任何 shell init )可能有類似的內容:

測試 -r ~/.iterm2_shell_integration.bash && 。 〜/.iterm2_shell_integration.bash

可能沒有經過初步測試。把它改成更難看的:

isiterm2.sh&&測試 -r ~/.iterm2_shell_integration.bash && 。 〜/.iterm2_shell_integration.bash

VS Code 遠端資源管理器/SSH 用戶 VS code 似乎在啟動時自動輸入/提供字元到 ssh 連接。這些指令可以被 isIterm2.sh 中的 stty 重設序列截斷。我的短期技巧是在提示的第二個顯示上執行此檢查/載入。這是這樣的不過是一個拼湊。

答案2

字串實際上不是ANSI 序列。相反,它們以 ANSI 序列開始,但在遠端電腦上進行翻譯(由於某些腳本錯誤),以便大多數字元轉換為不同的形式。

一個ANSI 序列例如會有

escape[A

可能;在 之前有一個可選A,但有問題的輸出顯示 a 133([是八進位 133)。同樣,螢幕截圖在多個位置顯示了文字\033而不是 ASCII 轉義字元。

gui 終端機和 putty 之間的差異很可能是前者可能設定TERMxterm-256color,而 PuTTY 有自己的配置,並且TERM在 PuTTY 中沒有設定(其預設值為xterm)。

Ubuntu 14.04 本身並沒有做到這一點(它已經存在了一段時間,沒有人抱怨),所以這是安裝後的“改進”。按照建議,首先查看您自己的.bashrc(或您添加的顏色主題腳本 - 其中一些非常有問題)。

答案3

這看起來像 iTerm2 的 shell 整合。看http://www.iterm2.com/documentation-shell-integration.html

檢查 .iterm2_shell_integration.bash 是否由 .bash_profile 取得。

答案4

這是因為 Iterm2s 的非標準轉義碼:專有轉義碼,已在此發布:Shell 整合在 Linux 終端機上顯示無效字符。若要解決此問題,請在已安裝 iTerm2 整合的遠端伺服器中執行下列命令:

  1. curl https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/isiterm2.sh > ~/.isiterm2.sh && chmod ug+x ~/.isiterm2.sh

  2. 修改您的.bash_profile(或.profile任何地方)以條件加載該腳本成功的外殼整合:

    ~/.isiterm2.sh && test -e "$HOME/.iterm2_shell_integration.bash" && source "$HOME/.iterm2_shell_integration.bash"

相關內容