在我的 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 处理该值的方式略有不同。有人可以解释发生了什么事以及如何解决它吗?
答案1
这\[\e[0,\]
是可疑的,因为所附文本escape,
不对应于有效的“ANSI”转义序列(逗号不是有效的最后一个字节)。它可能碰巧与 VTE 一起“工作”(它的内部有很多有趣的剪切/粘贴),但在其他终端上,您可能会看到一个会出现的杂散字符。
也许您想要键盘上的相邻键,m
。
顺便说一句,$(tput sgr0)
可能会产生相当于\e[0m
(tput
在整个表达式中一致使用也可以,虽然更冗长,但可能更易读)。
进一步阅读: