1、shell概述
在瞭解shell之前,先了解一下操作系統(Operating System,OS),操作系統是位於計算機硬件之上的第一層軟件,所有其他軟件都要在操作系統的支持下才能運行。操作系統與硬件離的最近的那一部分稱爲操作系統內核(Kernel),它是操作系統最內側部分,它的存在使得硬件和軟件之間的通信得以順利進行;操作系統最外側部分就是shell,shell包裹着操作系統“精密的”內部使其免受意外之損,這也是shell名字的來由。
shell是一種程序,它爲用戶提供了與操作系統交互的接口。當用戶登錄或打開終端或打開控制檯窗口後,操作系統爲用戶啓動shell。
2、shell的種類
shell種類有很多,常見的有:
2.1、The Bourfne Shell
這種shell由貝爾實驗室Steve Bourne開發,是最早的UNIX shell。它因體積小速度快的特點成爲shell編程中的首先shell。這種shell的缺點是它缺少交互式使用的特點,比如不能重新調用歷史命令,也缺少內置的算術運算和邏輯表達式處理能力。
Bourne shell是Solaris操作系統中默認的shell,它還有如下特徵:
- 命令全路徑名是/bin/sh和/sbin/sh
- 非root用戶下默認提示符是$
- root用戶下默認提示符是#
2.2、The C Shell
該shell由加州大學伯克利分校的Bill Joy開發,是對原有UNIX shell的增強。引入的特性包括交互式使用,比如別名和歷史命令。引入了便捷的編程特性,比如內置算術運算和類C表達式語法。它還有如下特徵:
- 命令全路徑是/bin/csh
- 非root用戶下默認提示符是主機名+%
- root用戶下默認提示符是主機名+#
2.3、The Korn Shell
該shell有貝爾實驗室David Korn開發,是Bourne Shell的超集,支持Bourne Shell的一切語法特性,擁有可與C shell相媲美的交互式特性,包括內置算術運算、類C數組、函數和字符串處理的特色,比C shell更快,兼容由Bourne shell編寫的腳本。它還有如下特徵:
- 命令全路勁是/bin/ksh
- 非root用戶下默認提示符是$
- root用戶下默認提示符是#
2.4、The GUN Bourne-Again Shell
該sehll兼容Bourne shell,從C shell和Korn shell中引入了新特性,可以使用方向鍵映射到命令以便重調或編輯。它還有如下特徵:
- 命令全路徑是/bin/bash
- 非root用戶下默認提示符是bash-x.xx$,x.xxx暗示了shell版本號
- root用戶下默認提示符是bash-x.xx%,x.xx同樣暗示了shell版本號
2.5 下面以表格形式對比一下上面四種shell:
Shell | Path | 默認提示符(non-root) | 默認提示符(root) |
---|---|---|---|
The Bourne Shell(sh) | /bin/sh and /sbin/sh | $ | # |
The C Shell(csh) | /bin/csh | % | # |
The Korn Shell(ksh) | /bin/ksh | $ | # |
The GUN Bourne-Again Shell(Bash) | /bin/bash | bash-x.xx$ | bash-x.xx# |
shell的種類還有很多,其中GUN Bourne Again Shell(Bash)使用非常廣泛,因此本教程將重點介紹Bash。