Bash提示历史问题

Jos*_*h B 13 bash command-prompt .bash-profile

这是一个奇怪的问题,我无法与谷歌找到一个好的答案(当然,我总是有可能失败).在我的bash提示符下,如果我为提示的一部分着色,当我点击'up'转到上一个命令时,我不能在超过一定数量的字符(特别是31)之后转到该行的开头.

我当前的bash提示是:(颜色在我的.bashrc中定义)

PS1="[\u@$cyan\h$NC \w] "
Run Code Online (Sandbox Code Playgroud)

但如果我把它改成这个:

PS1="[\u@\h \w] "
Run Code Online (Sandbox Code Playgroud)

它不再阻止我走到行的开头.

奇怪的部分,在视觉上,当我回到家中去到行的开头(或使用箭头键)时它会将11个字符停在字符串中,但是如果我从那里编辑它,它会从头开始编辑这条线.

有谁知道为什么会发生这种情况?我希望在我的提示中使用颜色,因为我进行服务器管理,颜色是我如何区分我的盒子一目了然.

Pau*_*ce. 26

非打印序列(如颜色代码)必须包围\[,\]因此它们的长度不计入提示长度的一部分.