新行不再适用于具有自定义提示的终端

时间:2013-11-04 21:32:51

标签: bash redhat

我设置了提示颜色:PS1='\e[3;32m[\u@\h:\W]$ \e[m'

但是,现在非常长的命令不再自动导致出现新行。相反,长于一行的命令将开始出现在当前行的左侧,覆盖当前字符。

1 个答案:

答案 0 :(得分:7)

提示中的非打印字符需要包含在\[...\]中,以便bash可以准确计算提示的可见长度。

PS1='\[\e[3;32m\][\u@\h:\W]$ \[\e[m\]'
     ^^        ^^            ^^    ^^

bash本身不知道终端不会显示这些字节;它是您的终端,而不是显示7字节序列\e[3;32m,只是更改用于显示以下字符的颜色。另一方面,\ubash本身的用户名替换,因此您无需做任何特别的事情来告诉bash如何正确处理它。