Ubuntu

Mac 與 Ubuntu 中終端 PS1 值的奇怪行為

  • January 24, 2017

在我的 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在整個表達式中始終如一地使用也可以,雖然更冗長,但可能更具可讀性)。

進一步閱讀:

引用自:https://unix.stackexchange.com/questions/337701