
我正在將 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\] '
它似乎對我有用,沒有問題。