在 Linux Deepin 的命令行中,我们有时会遇到 $PS1, $PS2, $PS3, $PS4 几个变量,他们分别代表什么意思呢?
在 Linux 中,一个好的习惯就是阅读 man pages,所以,我们先来查看一下 bash 的在线文档:

我们使用 /PS1 搜索相关条目,可找到下面的几行内容:

PS1 变量的展开值用作主提示符字符串。其默认值为 "\s-\v\$ "。在 Linux Deepin 中其默认值为 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '。我们曾在《在 Linux Deepin 下设置类 Gentoo 的彩色 Bash 提示符》一文中讲述过 PS1 变量的简单设置,如需要更多信息,可查看其 man pages 的 PROMPTING 一节及《Bash Prompt HOWTO》一文。

PS2 变量展开的方式与 PS1 相同,其展开值用作次提示符字符串。用于提示接续你尚未完成输入的命令。其默认值为"> ",也可以自定义,如:

PS3 变量的值用于用作 select 命令的提示符。假设我们有一个名为 seasons 的脚本,其内容为:

其输出会像下面这样:

这次,我们修改脚本的第二行,定义 PS3 变量:

这次脚本的输出会变为:

PS4 变量展开的方式与 PS1 相同。在执行跟踪时该展开值都会显示在每一条命令的前面。PS4 的值的第一个字符会按需重复多次,用于表示多个间接层次。其默认值为 "+ "。现在我们使用 bash -x ./seasons 再次执行上面的脚本,或将该脚本的标头修改为下面的内容:

我们会发现,默认状况下会在命令前显示 +x 这个提示符。

发表评论