什么是shell提示符
位于shell终端开头处始终会显示一包含主机名、用户名、当前路径或其他信息的字符串,这个字符串被称作shell提示符。默认的bash shell提示符是美元符号($),这个符号表明shell在等待用户输入,但也可以自行修改shell提示符。
不同的Linux发行版采用不用格式的shell提示符。在Ubuntu上,bash shell提示符通常为“root@user-desktop:~$”,在CentOS上,[root@user-desktop home]。用户可自行配置提示符以显示当前操作环境的基本信息。
shell提示符的配置方式
在Linux系统中提供了两个环境变量用于对shell提示符的格式进行配置:
- PS1:控制默认shell提示符的格式
- PS2:控制后续shell提示符的格式
shell在首次输入数据条目是使用默认的PS1提示符。输入一个需要其他信息的命令时,shell会显示由PS2环境变量指定的后续命令行提示符。可以用echo命令查看当前的提示符命令。
root@myuser-OpenStack-Nova:~# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
root@myuser-OpenStack-Nova:~# echo $PS2
>
shell使用特殊字符在命令提示符中标记元素。下表列出了在提示字符串中使用的特殊字符。
字符 | 描述 |
---|---|
\a | 报警字符 |
\d | “日 月 年”格式显示的日期 |
\e | ASCII转义字符 |
\h | 本地主机名(FQDN) |
\H | 完全限定域名 |
\j | shell当前管理的任务数 |
\l | shell的终端设备名中的基名 |
\n | ASCII换行符 |
\r | ASCII回车符 |
\s | shell的名称 |
\t | 24小时制HH:MM:SS格式的当前时间 |
\T | 12小时制的HH:MM:SS格式的当前时间 |
\@ | 12小时制am/pm格式的当前时间 |
\u | 当前用户的用户名 |
\v | bash shell的版本 |
\V | bash shell的发行版本 |
\w | 当前的工作目录 |
\W | 当前工作目录的基名(basename) |
\! | 这个命令在bash shell历史记录中的位置 |
\# | 这个命令在当前命令行的位置 |
\nnn | 与八进制数nnn对应的字符 |
\\ | 反斜线(\) |
\[ | 开始一个控制字符的序列 |
\] | 结束一个控制字符的序列 |
-bash-4.1$提示符的异常产生原因与解决方法
当用户配置文件被误删或者缺失时,往往会造成shell提示符显示为-bash-4.1$的现象。在缺省环境下,环境变量PS1被置为缺省值“\s-\v”。因此可手动在用户目录(~)下创建一个名为.bashrc的文件,在其中填写:
export PS1=[\u@\h \W]\$
或从其它用户目录下复制同名文件,并用source命令执行生效。示例中的格式控制符为CentOS格式的,用户也可通过重复上述操作自行切换为其它格式。