![自定义提示在 Mac 终端上不起作用](https://linux22.com/image/1328802/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8F%90%E7%A4%BA%E5%9C%A8%20Mac%20%E7%BB%88%E7%AB%AF%E4%B8%8A%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我喜欢在我的 unix 机器上使用自定义提示(当前路径为蓝色):
export PS1='\[\e[0;34m\]\w \$\[\e[m\] '
但是当我尝试在 Mac 的终端上使用它时,它不起作用:它无法检测到提示符的结束,并且在我输入命令时覆盖了提示符。当我输入长命令时也会发生这种情况,它会换行而不是开始新行。
我不明白为什么会出现这种情况,因为我在两台机器上都使用 bash。有什么建议可以解决这个问题吗?
答案1
我不确定你为什么会得到不同的结果,但正确的值应该是
export PS1='\[\e[0;34m\]\w \$\[\e[m\] '
非打印字符应该括在内\[ \]
,以便 bash 可以计算屏幕上提示的正确长度(为了光标定位的目的)。
答案2
尝试将其放在常规双引号“”中,而不是这些 ' ' 单引号中。对我来说很管用。也适用于 iTerm 以及 Mac OS X 的终端。
答案3
\[\e[
[\e[
当它不是以代码格式出现时,就会出现在帖子中。抱歉造成混淆。我通过将 Mac 上的 bash 从 3.0 更新到 4.2 解决了该问题。