当我浏览历史记录时,Bash 提示出现乱码?

当我浏览历史记录时,Bash 提示出现乱码?

我有 MacOS 和.bash_profile内容:

export PS1="\[\e[0;31m$\]\[\e[m\] \[\e[0;32m\w\e[m\] : \]"

结果我在终端中打印了 pwd,如下所示:

屏幕截图

但是当我按向上和向下箭头使用终端历史记录时,我遇到了错误:

在此输入图像描述

答案1

  1. 无需导出 PS1:它是 shell 的变量,其他进程不会使用它。
  2. 看起来你的转义括号不太正确。他们在那里包围非印刷序列,因此 bash 可以准确地计算出提示符的宽度。尝试这个:

    PS1="\[\e[0;31m\]\$ \[\e[0;32m\]\w\[\e[0m\] : "
    #     1.........1    2.........2   3......3 
    

    所以打印位(\$\w、冒号和空格)是外部括号。

进一步参考:https://www.gnu.org/software/bash/manual/bashref.html#Controlling-the-Prompt

相关内容