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 時將從新使用默認的提示符格式。變量