📜  linux 中的 $PS1 - 4 是什么 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:43.063000             🧑  作者: Mango

Linux 中的 $PS1 - 4 是什么 - Shell-Bash

在Linux中,终端命令行的格式可以用环境变量 $PS1 控制。$PS1 定义了用户在终端中看到的基本提醒符号,也可以帮助你自定义终端提示符号的外观。

$PS1 变量

$PS1 是一个环境变量,为Shell命令行的提示符。它是向用户显示的,用来指示用户可以输入命令的位置。

在终端中,一般有如下格式:

[user@hostname path]$ 

其中,[user@hostname path]$PS1 的值。其中的元素代表:

  • user: 当前用户名
  • hostname: 当前所在主机名
  • path: 当前所在路径

如果你是root用户,当前用户的提示符形式为:

[root@hostname path]# 

中间的 $# 用来区分普通用户和管理员。

$PS2$PS3变量

$PS2$PS3都是Shell命令行的二级和三级提示符。当 Shell 需要一个多行输入时,包括 Script 和 history substitution、命令替换等等,会需要使用它们。

  • $PS2 :二级提示符,标记 Shell 正在等待输入时的换行符,通常是 >
  • $PS3 :三级提示符,标记 Shell 使用 select 命令时在屏幕上显示的提示符号。默认情况下,它是 prompt("#")。
$PS4 变量

$PS4 变量是在 Bash Shell 中运行调试脚本使用的,它在调试期间显示一些内容,方便调试者查看代码执行流程。

$PS4 变量没有设置的情况下,默认的值为 "+ "

举例说明,设想你需要调试一个Bash脚本,你可以这样设置环境变量:

$ export PS4='Line ${LINENO}: '
$ bash -x test.sh

test.sh 脚本中大约是这个样子的:

#!/bin/bash    
echo "进入脚本"
echo "开始循环"
for i in {1..5}
do
    sleep 1
    echo $i
done
echo "退出脚本"

这样就可以在脚本执行时,把执行过程的行数打印出来:

Line 2: echo '进入脚本'
进入脚本
Line 3: echo '开始循环'
开始循环
Line 5: for i in '{1..5}'
Line 7: sleep 1
Line 8: echo 1
1
Line 7: sleep 1
Line 8: echo 2
2
Line 7: sleep 1
Line 8: echo 3
3
Line 7: sleep 1
Line 8: echo 4
4
Line 7: sleep 1
Line 8: echo 5
5
Line 9: echo '退出脚本'
退出脚本
总结

$PS1 控制着Shell提示符的格式,可以让用户自定义终端的外观,$PS2$PS3 变量用于多行输入时,分别表示第二和第三级提示符,$PS4 变量在调试脚本时,显示调试信息,帮助调试人员更好的了解程序运行状态。