Ubuntu
Mac 與 Ubuntu 中終端 PS1 值的奇怪行為
在我的 Mac 和 Ubuntu 上,我將 PS1 值設置為以下:
export PS1='\[\e[1;31m\]\d\[\e[0m\] \[\e[1;32m\]\u \W\[\e[0m\] \[\e[1;36m\]>\[\e[0,\] \[$(tput sgr0)\]'
在 Ubuntu 上,終端提示看起來不錯。但在我的 Mac 上放置了一個額外的“B”,如下所示:
Mon Jan 16 DrizzutoJr ~ >B
我假設 Mac 和 Ubuntu 處理值略有不同。有人可以解釋發生了什麼以及如何解決它嗎?
這
\[\e[0,\]
是可疑的,因為封閉的文本*escape*``**
,**
不對應於有效的“ANSI”轉義序列(逗號不是有效的最終字節)。它可能碰巧與 VTE 一起“工作”(它的內部有很多有趣的剪切/粘貼),但在其他終端上,您可能會得到一個會出現的流浪字元。也許您打算在鍵盤上使用相鄰的鍵,
m
.順便說一句,
$(tput sgr0)
很可能會產生等價物**\e[0m
**(tput
在整個表達式中始終如一地使用也可以,雖然更冗長,但可能更具可讀性)。進一步閱讀: