Shell 是一个程序,通常都是放在/bin
或者/user/bin
目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells
文件中。/etc/shells
是一个纯文本文件,你能够在图形界面下打开它,也可使用 cat 命令查看它。
经过 cat 命令来查看当前 Linux 系统的可用 Shell:shell
$ cat /etc/shells
/bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin
在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh
每每是指向/bin/bash
的符号连接。
若是你但愿查看当前 Linux 的默认 Shell,那么能够输出 SHELL 环境变量:bash
$ echo $SHELL
/bin/bash
输出结果代表默认的 Shell 是 bash。spa
对于普通用户,Base shell 默认的提示符是美圆符号
命令行$
;对于超级用户(root 用户),Bash Shell 默认的提示符是井号#
。该符号表示 Shell 等待输入命令。
[root@localhost ~]#
这种格式包含了如下三个方面的信息:code
~
是主目录的简写表示法。
Shell 经过PS1
和PS2
两个环境变量来控制提示符格式:blog
要显示提示符的当前格式,可使用 echo 输出 PS1 和 PS2:io
[root@localhost ~]# echo $PS1 [\u@\h \W]\$ [root@localhost ~]# echo $PS2 >
Shell 使用以\
为前导的特殊字符来表示命令提示符中包含的要素,这使得 PS1 和 PS2 的格式看起来可能有点奇怪。下表展现了能够在 PS1 和 PS2 中使用的特殊字符。table
字符 | 描述 |
---|---|
\a | 铃声字符 |
\d | 格式为“日 月 年”的日期 |
\e | ASCII转义字符 |
\h | 本地主机名 |
\H | 彻底合格的限定域主机名 |
\j | shell当前管理的做业数 |
\1 | shell终端设备名的基本名称 |
\n | ASCII换行字符 |
\r | ASCII回车 |
\s | shell的名称 |
\t | 格式为“小时:分钟:秒”的24小时制的当前时间 |
\T | 格式为“小时:分钟:秒”的12小时制的当前时间 |
\@ | 格式为am/pm的12小时制的当前时间 |
\u | 当前用户的用户名 |
\v | bash shell的版本 |
\V | bash shell的发布级别 |
\w | 当前工做目录 |
\W | 当前工做目录的基本名称 |
\! | 该命令的bash shell历史数 |
\# | 该命令的命令数量 |
\$ | 若是是普通用户,则为美圆符号$ ;若是超级用户(root 用户),则为井号# 。 |
\nnn | 对应于八进制值 nnn 的字符 |
\\ | 斜杠 |
\[ | 控制码序列的开头 |
\] | 控制码序列的结尾 |
注意,全部的特殊字符均以反斜杠\
开头,目的是与普通字符区分开来。您能够在命令提示符中使用以上任何特殊字符的组合。
咱们能够经过修改 PS1 变量来修改提示符格式,例如:class
[root@localhost ~]# PS1="[\t][\u]\$ " [22:12:45][root]$
新的 Shell 提示符如今能够显示当前的时间和用户名。不过这个新定义的 PS1 变量只在当前 Shell 会话期间有效,再次启动 Shell 时将从新使用默认的提示符格式。变量