Shell腳本的簡單介紹

什么是Shell

Shell應(yīng)該是命令解釋器,將Shell腳本解析成操作系統(tǒng)能理解的操作去執(zhí)行。
Shell腳本就是一系列的命令合集。

Shell的種類

Unix/Linux上常見的Shell腳本解釋器有bash、sh、ash、csh、ksh等,習(xí)慣上把它們稱作一種Shell。我們常說有多少種Shell,其實(shí)說的是有多少種Shell腳本解釋器。

在不同的操作系統(tǒng)中,支持的Shell腳本是不一樣的,不同的Shell腳本的命令和語法方式也有所區(qū)別的。

在Linux下面可以執(zhí)行下面命令,來查看支持的shell的種類

cat /etc/shells

在網(wǎng)上查了下資料,大體上有這么幾種shell吧

  1. Thompson shell
    這是世界上第一個(gè)Unix shell,1971年發(fā)行的第一版Unix操作系統(tǒng)就包含了它,是一個(gè)非常簡單的命令行解釋器。它的作者是Ken Thompson

  2. sh
    全稱叫Bourn Shell,1976年在貝爾實(shí)驗(yàn)室被開發(fā)出來,為的就是要替代Thompson shell,作者是Stephen Richard (Steve) Bourne。后來為了紀(jì)念作者所以名字叫Bourn Shell,簡稱sh,再后來成了Unix 標(biāo)準(zhǔn)默認(rèn)的shell。

  3. csh
    全稱叫C Shell,作者是Bill Joy,1978年在伯克利的加利福尼亞大學(xué)時(shí)開發(fā)完成的,主要是為了讓用戶更容易的使用交互式功能,并把ALGOL風(fēng)格的語法結(jié)構(gòu)變成了C語言風(fēng)格。

  4. tcsh
    全稱叫TENEX/TOPS C shell,是csh的增強(qiáng)版,并且完全兼容csh。它不但具有csh的全部功能,還具有命令行編輯、拼寫校正、可編程字符集、歷史紀(jì)錄、作業(yè)控制等功能。所以后來大家都紛紛用tcsh取代csh。早期的OS X 是預(yù)裝tcsh來作為默認(rèn)的shell的,后來在10.3版本后就把bash作為默認(rèn)的shell了。

  5. ksh
    全稱叫Korn Shell,作者是David Korn,有很長一段時(shí)間,大家要么選擇Bourne shell,要么選擇C shell,為了改變這種狀況,到了1983年,當(dāng)時(shí)在貝爾實(shí)驗(yàn)室的David Korn開發(fā)了Korn shell。ksh結(jié)合了所有的C shell的交互式特性,融入了Bourne shell的語法,并新增了諸多其他功能。
    在2000年前ksh都還一直是AT&T的專有軟件,后來經(jīng)歷復(fù)雜的版本演變和license變更,成為了一個(gè)開源的軟件。原生的ksh一般是指ksh88,AIX操作系統(tǒng)把它作為默認(rèn)的shell,后來經(jīng)歷了多個(gè)版本的演變,比如:ksh93ksh93uksh93tksh93v
    后面在其基礎(chǔ)之上又衍生出了多個(gè)shell的變種,如:dtksh、tksh、oksh、mksh、SKsh、pdksh。

  6. ash
    全稱叫Almquist shell,它是一種輕量級的兼容sh(Bourn Shell)的Shell,大小只有92K,對于小內(nèi)存的機(jī)器非常有幫助,但是不提供擴(kuò)展,所以現(xiàn)在使用起來會(huì)覺得不是很方便。它的作者是Kenneth Almquist,在1989年開發(fā)完成,90年代初在BSD版本的Linux Unix上替代Bourn Shell,成為默認(rèn)的shell。目前BSD衍生版本的Linux Unix(如NetBSD、DragonFly BSD、MINIX、Android等)上仍然是默認(rèn)的Shell。也有一些Linux的操作系統(tǒng)上也使用ash作為默認(rèn)的shell。Android在Android4.0以下使用ash作為默認(rèn)的shell,以后就是換成了mksh作為默認(rèn)的shell環(huán)境。
    具體演變點(diǎn)擊這里查看。

    Almquist shell 演化圖

    修正:BSD不能算是Linux,算是Unix的開源版本,其衍生版本OpenBSD,NetBSD等也算是Unix啦,這里感謝網(wǎng)友提示。

  7. dash
    全稱叫the Debian Almquist Shell,是Debian驅(qū)動(dòng)的一個(gè)ash(Almquist shell)的衍生版本,因?yàn)镈ebian衍生出來的Linux(如Ubuntu)把它作為默認(rèn)的shell,所以才成為一個(gè)影響力比較大的shell種類。

  8. bash
    全稱叫Bourne Again Shell,作者是Brian Fox,在1989年開發(fā)完成。它是sh(Bourne Shell)的增強(qiáng)版本,GNU工程的一部分,用來替代Bourne shell。它用于基于GNU的系統(tǒng),如大多數(shù)的Linux(Red Hat、Slackware、Caldera)都以bash作為缺省的shell,并且運(yùn)行sh時(shí),其實(shí)調(diào)用的是bash。OS X也把它作為默認(rèn)的shell,Windows也可以通過Cygwin或者M(jìn)inGW來支持。

  9. zsh
    全稱叫Z Shell,作者Paul Falstad在1990年還是普林斯敦大學(xué)的學(xué)生時(shí)寫了zsh的第一個(gè)版本。zsh名字來源于耶魯大學(xué)教授Zhong Shao,那個(gè)時(shí)候Zhong Shao還是普林斯敦大學(xué)的助理教授。
    zsh是在Bourne shell的基礎(chǔ)上擴(kuò)展出來的,經(jīng)歷了大量的改進(jìn)后,又引入了bash、ksh和tcsh的新特性,而且它是開源的,地址在這,很多人都在推崇它,甚至MacTalk都說它是終極Shell

  10. cmd
    這個(gè)是Windows下的命令行工具

  11. PowerShell
    也是Windows下面的命令行工具,支援 .NET Framework 技術(shù)

目前各主要操作系統(tǒng)下缺省的Shell

  • AIX下 缺省的是 ksh
  • Oracle Solaris 缺省的是 rsh(sh的一個(gè)限制版本)
  • FreeBSD 缺省的是 csh
  • Linux 大部分缺省的是 bash
  • Mac 缺省的是 bash
  • Windows 支持 cmd & PowerShell
  • Android 缺省的 是 ash
  • Android 缺省的 是 mksh (Android4.0以下是ash)

所以如果想要學(xué)習(xí)shell腳本,應(yīng)該學(xué)bash。而且在Windows上面可以通過Cygwin或者M(jìn)ingw來支持bash。

參考:http://c.biancheng.net/cpp/view/6995.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,555評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,516評論 2 379