我知道可以自定义提示(详见6.9 控制Bash 手册中的提示部分),我已经做了一段时间,但我最近注意到一些奇怪的行为。
考虑以下两种情况:
没有转义序列
PS1='\$ '
PS2='> '
PS3='#? '
PS4='+ '
带有转义序列
PS1='\[\e[1;34m\]\$\[\e[0m\] '
PS2='\[\e[1;34m\]>\[\e[0m\] '
PS3='\[\e[1;34m\]#?\[\e[0m\] '
PS4='\[\e[1;34m\]+\[\e[0m\] '
所以,问题是:
PS3
按原样打印,不解释转义序列。PS4
甚至没有打印出来。
我很确定它们以前曾经工作过,但是由于我不经常使用它们,所以我不知道它们何时行为不端。
技术细节
- 操作系统: Ubuntu 16.04.4
- 外壳: Bash 4.3.48(1)-发布
- 终端模拟器: GNOME Terminal 3.18.3(不过它也发生在虚拟终端中)
- 据我所知,自从安装系统(2017-06-09)以来,没有任何 Bash 更新。
来自
man bash
:因此,无论出于何种原因,不扩展
PS3
都是记录在案的行为。至于
PS4
您需要导出变量以使其在新的调用中可用bash
。而且您需要明确设置跟踪选项,-v
不要打开它:从
bash
手册:的定义
PS3
并没有说明它以与其他提示字符串相同的方式扩展。您看到的行为与文档一致。