shell編程入門之shell介紹

這段時間做集成開發,需要很多的shell腳本,特此開貼供自己後續參考和補充

每一次接觸一門語言的時候,首先是想到語言的由來,使用場景,以及基本的語法和語義,最後怎麼處理到我想要的東西呢。包括在學任何東西的時候都會有這樣的疑惑,正是通過這樣的思考,展開我們的文章。

本章節shell的起源,shell的分類,shell的運行方式,shell的角色

(1)shell起源

Bourne Shell     是1977年發佈的Unix Version 7 中的默認Shell。目前大多數Unix系統仍保留着原始的 /bin/sh,或者保留一個軟連接到其他Shell上 。該程序由 Stephen Bourne 在貝爾實驗室工作期間開發,它的開發是做爲 Thompson Shell 的一個替代。隨着《The UNIX Programming Environment》(作者Brain W. Kernighan、Rob Pike)一書的出版,Bourne Shell開始變得流行起來。

C Shell (csh)在1970年代,由當時還是加州大學伯克利分校的學生Bill Joy編寫。在1978年,隨着BSD Unix系統的第二個版本廣泛發佈。早期貢獻代碼的成員還包括:Michael Ubell, Eric Allman, Mike O'Brien and Jim Kulp。在一些系統如Mac OS X和Red Hat Linux上,csh實際上是tchsh,一種增強型的shell。csh包含了當今shell的絕大多數特性,包括filename wildcarding, piping, here documents, command substitution, variables and control structures for condition-testing and iteration。雖然csh有着衆多的交互特性以及快速的執行速度,但是最終未能流行起來。整個80年代,csh不能夠確保出現在所有的Unix系統上,但是sh可以,這也是造成csh不夠流行的主要因素。90年代中期,csh的分發開始廣泛起來,這時又遭受了POSIX委員會的質疑,指出語法不夠完善、特性缺失、擴展性差等問題[8]。

Korn Shell (ksh)由 David Korn 編寫,1983年在USENIX上宣佈。它向後兼容Bourne Shell,同時吸取了C Shell中的一些優點(job control)。代碼貢獻者還包括當時在Bell Labs的Mike Veach和Pat Sullivan。目前爲開源軟件:http://www.kornshell.org/。ksh的早期版本爲 ksh88,是AIX4上的默認shell。後來又發佈了ksh93版本。

Bash (the Bourne-Agian shell)由 Brian Fox 爲GNU項目編寫,目的是代替sh。首次發佈於1989年,作爲GNU項目的一個程序廣泛分佈在Linux、Mac OS X、Cygwin上。Brain Fox作爲FSF的員工,首次開始工作是在1988年的1月10號,一年之後,發佈了.99的測試版本。

(2)shell的分類

sh(Bourne shell):各種unix系統都配有sh

csh(c shell):隨BSD UNIX發佈,和c語言類似

ksh(korn shell):向後兼容sh的功能,並添加csh引入的新功能

tcsh(TENEN C shell):csh的增強版,在freeBSD和mac os x等系統中替代csh

bash(Bourne Again Shell):由GNU開發的shell,目標是與POSIX標準保持一致,同時兼容sh,是各種linux發行版本的標準配置。在linux系統上/bin/sh往往是指向/bin/bash的符號鏈接

從/etc/shells中可以獲取shell類型

(3)shell的運行方式

shell是解釋性語言,一種方式是交互式:用戶輸入一條命令,shell就解釋一條命令

另一種方式是批處理:用戶事先寫一個shell腳本,讓shell一次把這些命令執行完成

(4)shell的角色

充當用戶與unix或linux交互的角色,類似linux的客戶端

可以作爲一種程序設計語言



發佈了35 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章