这篇文章介绍一下Bash中的环境变量PS1。

PS1 是什么

PS1 是Prompt String 1的缩写,它是Linux/Unix下的一个用于控制提示信息的环境变量,PS1是交互式的shell用于控制用户输入提示信息的环境变量,类似的环境变量还有PS2、PS3和PS4。以下是man bash获得说明内容:

  • Bash版本:4.2.46
[root@liumiaocn ~]# bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@liumiaocn ~]# 
  • PS1-PS4的说明
    在这里插入图片描述
    结合上述PS1-PS4的说明,可以理解此四个环境变量的作用主要如下:
环境变量用途
PS1交互式脚本等待用户输入时的提示信息
PS2一条命令没有结束的时候的连接性的提示(比如使用\将一行复杂的命令使用多行连接起来的场合)
PS3和select命令结合使用
PS4调试时的行前显示内容

这篇文章主要介绍以下PS1相关的内容。

PS1示例

在本文示例的Bash环境中,PS1环境变量设定值如下所示:

[root@liumiaocn ~]# echo $SHELL
/bin/bash
[root@liumiaocn ~]# echo $PS1
[\u@\h \W]\$
[root@liumiaocn ~]#

其中\u、\h与\W都是PS1的设定项目,其具体含义分别如下所示:

  • \u:当前用户的用户名
  • \h:主机名(包含.的情况下取第一个字段)
  • \W:当前目录(显示为basename的信息),$HOME目录显示为~

PS1设定项目

设定项目设定说明
\aASCII(07)警示音
\d以"Weekday Month Date"格式显示的日期信息(示例:Wed Jan 29)
\D{format}指定显示格式的日期
\e转义(033)(比如进行颜色设定)
\h主机名(包含.的情况下取第一个字段)
\H完整主机名(包含.的情况下和\h有所区别)
\j通过当前shell在后端运行的进程数量(比如通过&符)
\l此shell的终端设备名(basename)
\n换行
\r回车
\sthe name of the shell, the basename of $0 (the portion following the final slash)
\t当前实现显示,格式为:24-hour HH:MM:SS
\T当前实现显示,格式为:12-hour HH:MM:SS
@当前实现显示,格式为:12-hour am/pm
\A当前实现显示,格式为: 24-hour HH:MM
\u当前用户的用户名
\vthe version of bash (e.g., 2.00)
\Vthe release of bash, version + patch level (e.g., 2.00.0)
\w当前目录(显示为全路径),$HOME目录显示为~
\W当前目录(显示为basename的信息),$HOME目录显示为~
!当前命令在历史命令缓冲区中的序号
#命令编号, 从1开始(!是在history的位置)
$超级用户(UID为0)显示为#,其余显示为$
\nnn使用八进制表示的ASCII,比如\a也可以表现为\007
\反斜线
[非打印字符序列开始,比如颜色转义序列信息
]非打印字符序列结束
Logo

更多推荐