Thompson shell

出自Local Chinese Wikipedia
跳至導覽 跳至搜尋

package.lua第80行Lua錯誤:module 'Module:CGroup/core' not found

頁面Module:Infobox/styles.css沒有內容。

Thompson shell
腳本錯誤:沒有「InfoboxImageVariant」這個模塊。
原作者肯·湯普遜
首次發佈1971年 (1971)
當前版本Template:Software version
原始碼庫頁面Template:Plainlist/styles.css沒有內容。Template:EditAtWikidata
編程語言C語言
引擎頁面Template:Plainlist/styles.css沒有內容。
    腳本錯誤:沒有「Wd」這個模塊。
Template:EditAtWikidata
作業系統Unix
類型Unix shell
許可協議頁面Template:Plainlist/styles.css沒有內容。
    腳本錯誤:沒有「Wd」這個模塊。
Template:EditAtWikidata
網站腳本錯誤:沒有「WikidataIB」這個模塊。
腳本錯誤:沒有「Template wrapper」這個模塊。

Thompson shell是歷史上第一個Unix shell,1971年由肯·湯普遜寫作出第一版並加入UNIX之中。它是一個簡單的命令列直譯器,但不能被用來執行指令稿(Shell script)。它的許多特徵影響了以後命令行界面的發展。至Version 7 Unix之後,被Bourne shell取代。

Thompson shell使用的重導向命令「<」與「>」,以及管線命令「|」影響到之後的Unix shellMS DOS

歷史[編輯]

「shell」的名字和概念是從Unix的前身Multics發展過來的。應用程式通過shell來進行調用並被系統執行。

Thompson shell設計之初就為輸入和輸出重定向設計了簡單的語法。在設計Multics系統時,輸入輸出的重定向需要用特別的命令來表示重定向開始和重定向結束,而在Unix系統中,用戶只需要簡單地在命令後面附加一個「<」或「>」符號,再附上文件名,shell就可以在執行命令時處理輸入或輸出重定向。在1971年Unix發佈第一個版本時,這個語法就已經被實現了。

後來又加入了管道的功能。在道格拉斯·麥克羅伊的建議下,重定向的功能被擴展,這樣一條命令的輸出就可以用作另一條命令的輸入。按照版本3手冊,管道功能最初的語法是:

command1 >command2>

這個語法語義比較含糊,容易分不清重定向的來源和目標——系統難以分清command2是一個命令還是一個文件。到了版本4,語法就被改為了「|」和「^」符號:

command1 | command2

這個語法等同於:

command1 ^ command2

而「>」符號被改成了:

command1 > file1

這條命令會把command1的輸出內容寫入到文件file1中。

從Thompson shell誕生的「<」、「>」和「|」產生了深遠的影響。絕大多數Unix shell和其他系統的命令行(包括DOSOS/2Windows等)都支持這三個符號。

被替代[編輯]

Thompson shell是按照極簡主義進行設計的,語法非常簡單,即使是不太複雜的「if」和「goto」也需要多條命令來實現。[1]在1975年Version 6 Unix發佈之際,這個shell已經無法滿足大多數編程任務的需要。

這時,PWB/UNIX的開發者,特別是腳本錯誤:沒有「ilh」這個模塊。開始修改Thompson shell的原始碼,使其更適合編程。[1]修改之後的shell被稱為PWB shell或Mashey shell,包括了高級的控制流,並引入了變量,但新功能也有所限制,以保證與Thompson shell的兼容性。

最終,在1978年,Version 7 Unix已經把默認的shell換成了Bourne shell,而1979年時2BSD把默認shell換成了C shell。因為所有現代Unix系統和類Unix系統都是從Version 7 Unix和2BSD繼承而來,所以Thompson shell基本上已經不再被使用。但是,Thompson shell作為Ancient UNIX系統的一部分,並且開放原始碼,它也被移植到了現代Unix系統中,作為歷史展覽而出現。

參考文獻[編輯]

  1. 1.0 1.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/Identifiers' not found

參見[編輯]

package.lua第80行Lua錯誤:module 'Module:Navbar/configuration' not found Template:肯·湯普遜navbox