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

Vla*_*nko 1 command-line bash prompt command-history terminal

我有 MacOS 和.bash_profile内容:

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

结果我在终端中打印了这样的密码:

屏幕截图

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

在此处输入图片说明

gle*_*man 9

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

    PS1="\[\e[0;31m\]\$ \[\e[0;32m\]\w\[\e[0m\] : "
    #     1.........1    2.........2   3......3 
    
    Run Code Online (Sandbox Code Playgroud)

    所以打印位(\$, \w, 冒号和空格)在括号之外

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