linux 下 PS1 命令提示符设置
PS1 被称为 prompt (提示符), 是终端环境变量的其中之一, 主要用于 bash 命令前的提示词. 可以改成各种奇形怪状的内容, 自定义空间超大. 除了 PS1 , 还有 PS2-4 , 这些暂时没有用到. 搜索 linux ps1 能看到相关介绍.
# 获取 PS1 配置
可以在终端输入:
echo $PS1
来查看当前的设置. 比如我安装的 git-bash 在 git 仓库 输入上述命令得到如下输出:
\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\] `__git_ps1` \[\033[0m\]\n$
效果图如下所示:

这样的命令提示不美观, 而且当我们输入的命令得到很多输出的时候我们很难找到命令提示符在哪里, 所以可以通过设置 PS1 来改善命令提示符.
# 设置 PS1 配置
命令提示符是由一系列组件组合而成的, 这些组件包括:
| 组件 | 说明 | 例子 |
|---|---|---|
| \H | 完整的主机名称 | hostname.domain |
| \h | 仅取主机的第一个名字 | hostname |
| \u | 当前用户的账号名称 | username |
| \j | 在此 shell 中通过按 Ctrl+z 挂起的进程数 | 0 |
| \l | 此 shell 的终端设备名 | tty1 or 1 |
| \n | 换行符 | |
| \r | 回车符 | |
| \s | shell 的名称 | bash |
| \v | shell 的版本信息 | 4.2 |
| \V | shell 的版本信息 | 4.2.3 |
| \w | 完整的工作目录名称. 根目录会以 ~ 代替 | ~/Documents or /usr/bin |
| \W | 利用 basename 取得工作目录名称, 所以只会列出最后一个目录 | Document or bin |
| \d | 代表日期, 格式为 weekday month date | Mon Aug 1 |
| @ | 带有 am/pm 的 12 小时制时间 | 10:42 PM or 10:42 |
| \t | 显示时间为 24 小时格式, 如: HH: MM: SS | 22:42:01 |
| \T | 显示时间为 12 小时格式 | 10:42:01 |
| \A | 显示时间为 24 小时格式: HH: MM | 22:42 |
| \# | 下达的第几个命令 | 42 |
| \$ | 提示字符, 如果是 root 时, 提示符为:# , 普通用户则为:$ | $ or # |
我们可以通过颜色代码来修饰上述这些组件, 颜色代码的格式为 \[\e[F;B;Cm\] , 其中 F 表示字体的颜色, 编号 30~37 , B 表示背景的颜色, 编号 40~47 , C 表示字体的样式, 编号 0~8 . 多个颜色用分号隔开, 但 F 、 B 、 C 顺序可变, 这是因为他们的数值不冲突.
颜色表如下:
| 字体代码 | 背景代码 | 颜色 |
|---|---|---|
| 30 | 40 | 黑色 |
| 31 | 41 | 红色 |
| 32 | 42 | 绿色 |
| 33 | 43 | 黄色 |
| 34 | 44 | 蓝色 |
| 35 | 45 | 紫红色 |
| 36 | 46 | 青蓝色 |
| 37 | 47 | 白色 |
代码表如下:
| 代码 | 意义 |
|---|---|
| 0 | OFF |
| 1 | 高亮 |
| 2 | 黑暗 |
| 3 | 斜体 |
| 4 | 下划线 |
| 5 | 闪烁 |
| 7 | F / B 反转 |
| 8 | 不可见 |
| 9 | 删除线 |
根据以上说明, 我们可以试着配置一下:
只需要编辑 ~/.bashrc 文件:
$ vi ~/.bashrc
在文件的最后添加一行:
export PS1="\[\e[32;1m\][\[\e[33;1m\]\u\[\e[31;1m\]@\[\e[33;1m\]\h \[\e[36;1m\]\w\[\e[32;1m\]]\[\e[34;1m\]\$ \[\e[0m\]"
效果图如下:

说明:
- 这里 1m 背景色是近似透明的。
- 注意在 $ 符号输出之后, 我们还要重置颜色为透明, 也就是
\[\e[0m\]或\[\e[m\], 这样你输入的命令就不会受之前颜色设置的影响.
如果你是一个新手, 编辑 $PS1 环境变量的过程可能会有些困难, 因为命令提示符中的大量转义字符串可能会让你有点晕头转向. 但不要担心, 有一个在线的 bash $PS1 生成器可以帮助你轻松生成各种 $PS1 环境变量值.
就是这个网站: Easy Bash Prompt Generator (opens new window)
只需要直接选择你想要的 bash 命令提示符样式, 添加颜色、设计排序, 然后就完成了. 你可以预览输出, 并将配置代码复制粘贴到 ~/.bashrc 文件中. 就这么简单.