Bash 終端未正確換行文字

Bash 終端未正確換行文字

我正在將 bashgnome-terminal與 bash 一起使用,當我有一個應該越過該行的命令時,它只會保留在同一行上。所以而不是:

echo "abcdefghijklmnopqrstuvwxyz"

我會得到

opqrstuvwxyz""abcdefghijklmn

或類似的東西。但是,如果我按 Enter 鍵,該命令仍然有效。我相信這與我的 PS1 變數有關,但我不知道它出了什麼問題。這裡是:

export PS1='\e[1;35m[\u:\w]\$\e[0;35m '

答案1

這似乎有些相關:

Bash 手冊頁建議將tput輸出包裝。\[ \]這有助於 Bash 忽略不可列印的字符,以便正確計算提示符的大小。

來源

您的情況下的「tput輸出」如下所示:\e[1;35m\e[0;35m(有兩個單獨的片段需要包裝)。它們也可以寫成 和\033[1;35m\033[0;35m一般來說,您需要包裝任何不可列印的序列。

我修改了你的PS1

export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '

它似乎對我有用,沒有問題。

相關內容