我想使用 ANSI 转义代码定制我的 bash 提示符,并注意到在某些操作指南中代码被包含在内\[
,\]
而在其他操作指南中则没有。
例如,这些对我来说同样有效:
PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '
我不知道这有什么区别?
答案1
不同之处在于,如果没有\[
and \]
,bash 将无法跟踪提示符的实际长度,并且各种视觉故障将随着时间的推移而显现出来。
答案2
对此有很好的解释页:
这些序列将告诉 bash 括起来的字符不占用行上的任何空间,这将允许自动换行继续正常工作。如果没有它们,您最终会得到一个好看的提示符,但如果您碰巧输入了接近终端最右侧的命令,屏幕就会变得混乱。