shell进化史

1、前身

1971年,贝尔实验室的Ken Thompson为UNIX开发了第一种shell,称为V6 shell。类似于它在Multics中的前身,这个shell (/bin/sh)是一个独立的用户程序,在内核之外执行。

诸如通配符(模式匹配参数扩展,如*.txt)之类的概念在独立的glob实用程序中实现,如同if命令评估条件表达式一样。这种实现保证了Shell的短小精悍,它只有不到900行的C源代码。

V6 Shell引入了一系列简洁的语法,用于重定向(< >和>>)和管道(|或^),并一直沿用至今。你也会发现,它提供了对顺序调用命令(;)和异步命令(&)的支持。

Thompson Shell(即V6 Shell)的缺陷在于脚本编程能力的不足,它只是一个交互性的命令解释器。

2、Bourne Shell

1977年,Stephen Bourne在贝尔实验室为V7 UNIX开发了Bourne Shell,并一直沿用至今。很多情况下,它甚至是默认的Shell。Bourne Shell是用C语言开发的,但相比其他Shell,其语法更类似于算法语言(ALGOL)。

Bourne Shell的设计有两个目标:作为命令行解释器交互执行操作系统命令和脚本编程。

为了取代Thompson Shell,Bourne Shell有着巨大的优势:

在脚本中引入了控制流、循环和变量,提供了更强大的语言与操作系统交互

允许使用脚本作为筛选器,为处理信号提供集成支持,但缺乏自定义函数机制

纳入了一系列今天我们仍在使用的功能,包括命令替换、here-document等

Bourne Shell在前进的道路上迈出了至关重要的一步,同时也成了其他派生Shell的基石。Bourne Shell的出现推动了Korn shell (ksh)、Almquist Shell(ash)和流行的Bourne Again Shell(Bash)的开发,在Bourne Shell发布之际,C Shell也已在开发之中。

3、C Shell

1978年,Bill Joy还在加州大学伯克利分校读书的时候,就为BSD UNIX(Berkeley Software Distribution UNIX)开发了C Shell。

五年之后,C Shell引入了Tenex系统中的一些功能,如命令行编辑功能和文件名和命令自动补全功能。Tenex C shell(tcsh)保持了对csh的向后兼容,并且提升了整体的交互性,它是Ken Greer在卡内基-梅隆大学开发出来的。

C Shell的一个主要设计目标就是创建一种语法类似于C语言的脚本语言,因为C语言在当时非常流行,而且UNIX是用C来开发的。

Bill Joy在C Shell中引入的另一个重要特性是命令历史记录。此功能可以保留之前执行的命令的历史记录,并允许用户查看并选择执行之前的命令。

例如,键入history命令可以查看之前执行的命令,使用上下箭头键可以选择一个命令,使用!!可以执行前一个命令。引用前一个命令的参数也是可以的,比如,!*可以引用前一个命令的所有参数,!$可以引用前一个命令的最后一个参数。

4、Korn Shell

Korn Shell是由David Korn设计的,差不多跟Tenex C Shell同时发布。除了向后兼容Bourne Shell,Korn Shell最引人瞩目的特性就是支持脚本编程。

Korn Shell原来是专有软件,直到2000年,它才(遵照通用公共许可协议)作为开源软件发布。除了对Bourne提供很好的兼容性,Korn Shell还包含了一些来自其他Shell的功能,如csh的历史记录功能。它还提供了一些更先进的功能,这些功能可以在诸如Ruby和Python之类的现代脚本语言中找到——例如,关联数组和浮点运算。

Korn Shell在许多操作系统上都是可用的,这些系统包括IBM AIX and HP-UX。Korn Shell努力支持Portable Operating System Interface for UNIX(POSIX)Shell语言的标准。

5、Bourne-Again Shell

Bourne-Again Shell,即bash,是一个开源的GNU项目,旨在替换Bourne Shell。Bourne-Again Shell由Brian Fox开发,现在已经成为最流行的Shell之一,被广泛应用在Linux、Darwin、Windows和Cygwin之上。

除了支持脚本的向后兼容性,bash还吸收了Korn Shell和C Shell的一些特性。例如,命令历史记录,命令行编辑,目录堆栈,很多实用的环境变量,命令行自动完成,等等。

Bash继续发展了一些新的特性,如支持正则表达式和关联数组。

虽然一些特性是bash独有的,但我们仍然可以编写与其他脚本语言相兼容的脚本。


参考:By M. Jones Evolution of shells in Linux

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • shell:what? why?how? 编程思想 shell编程遵从UNIX哲学:把复杂问题分解成简单的小问题,...
    瑾兰阅读 2,051评论 1 0
  • 本文为Linux Shell Scripting Tutorial (LSST) v2.0学习记录 第一章 本章节...
    面面的徐爷阅读 2,545评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,475评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,548评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,713评论 1 1