Mac 与 Ubuntu 中终端 PS1 值的奇怪行为

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 处理该值的方式略有不同。有人可以解释发生了什么事以及如何解决它吗?

答案1

\[\e[0,\]是可疑的,因为所附文本escape,不对应于有效的“ANSI”转义序列(逗号不是有效的最后一个字节)。它可能碰巧与 VTE 一起“工作”(它的内部有很多有趣的剪切/粘贴),但在其他终端上,您可能会看到一个会出现的杂散字符。

也许您想要键盘上的相邻键,m

顺便说一句,$(tput sgr0)可能会产生相当于\e[0mtput在整个表达式中一致使用也可以,虽然更冗长,但可能更易读)。

进一步阅读:

相关内容