Bash提示符历史记录问题

15
这是一个比较奇怪的问题,在谷歌上我一直找不到好的答案(当然也有可能是我没能力)。在我的 bash 提示符上,如果我用颜色标记提示符的某个部分,并且在输入命令之后按“上箭头”回到之前的命令时,如果命令长度超过了一定数量(具体来说是 31 个字符),我就无法回到该行的开头。
我的当前 bash 提示符如下:(颜色在我的 .bashrc 文件中定义)
PS1="[\u@$cyan\h$NC \w] "

但是,如果我将它改为这样:

PS1="[\u@\h \w] "

现在这个问题已经不再阻止我回到行首了。

奇怪的是,当我按下Home键回到行首(或使用箭头键),界面上停留在字符串中的第11个字符处,但如果我从那里编辑它,实际上它会从行首开始编辑。

是否有人知道出现这种情况的原因?我想在提示符中使用颜色,因为我要进行服务器管理工作,通过颜色可以一眼区分我的盒子。

1个回答

27
非打印字符(例如颜色代码)必须用 \[\] 括起来,以便它们的长度不计入提示符的长度。

1
Examples - l0b0
我已经遇到这个烦人的问题好几个月了。谢谢!+1 - jweyrich
对我有用。我使用了这个命令:export PS1="[\e[0;36m]\u: [\e[m]" - vitmalina
非常喜欢!!!这个问题一直困扰了我很久,感谢! - Robert J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接