我设置了提示颜色:PS1='\e[3;32m[\u@\h:\W]$ \e[m'
但是,现在非常长的命令不再自动导致出现新行。相反,长于一行的命令将开始出现在当前行的左侧,覆盖当前字符。
答案 0 :(得分:7)
提示中的非打印字符需要包含在\[...\]
中,以便bash
可以准确计算提示的可见长度。
PS1='\[\e[3;32m\][\u@\h:\W]$ \[\e[m\]'
^^ ^^ ^^ ^^
bash
本身不知道终端不会显示这些字节;它是您的终端,而不是显示7字节序列\e[3;32m
,只是更改用于显示以下字符的颜色。另一方面,\u
由bash
本身的用户名替换,因此您无需做任何特别的事情来告诉bash
如何正确处理它。