Shell之前世今生

一、Shell的前世-群雄并起
        在Unix以及类Unix系统中,大家经常要使用Shell,它的起源可以追溯到操作系统的鼻祖-UNIX。1969年,AT&T 贝尔实验室的Ken Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户,多任务操作系统,

        过了不久,Dennis Richie也加入了这个项目,在他们共同努力下UNIX诞生了。

        在他们的开发过程中,Dennis Richie吸取了更早的麻省理工学院一个名为MULTICS操作系统项目失败的教训,将这个操作系统命名为UNIX.早期UNIX是用汇编语言编写的,但从其第三个版本开始,他们为了提高系统的可移植性和开发效率,为UNIX专门开发了一种崭新的编程语言C,并用C语言重新编写大部分代码。
 
  通过这次重新编写,UNIX得以移植到更为强大的DEC PDP-11/45与11/70计算机上运行。在UNIX发展早期,其源代码是公开的,并且开发文档也十分详细,所有这些都为人们进行研究提供了方便,UNIX很快成为当时欧美各大高校讲解操作系统的蓝本,所以UNIX很快成为当时校园流行的操作系统。不仅如此,加州大学伯克利分校还根据UNIX源代码,开发出了大名鼎鼎的BSD,这是UNIX的一个最著名的变种。不过好景不长,从UNIX的Version 7开始,AT&T将UNIX商业化,更换了许可协议,不再允许先前自由开放的做法。
 
  与此同时,第一个重要的标准UNIX Shell于1979年末在Version 7 UNIX环境推出,并以作者Stephen Bourne的名字命名,叫做Bourne Shell(简称为sh)。Bourne Shell是基于另一种叫做Algol的语言。比较有意思的是,Bourne Shell当时主要用于系统管理任务的自动化。此后,Bourne Shell凭借其简单和高速而广受欢迎,很快就成为流行的Shell.当然,Bourne Shell也有不少缺点,如缺少一些交互的功能,如命令作业控制、历史和别名等。
 
  而在这时,AT&T UNIX 的一个著名分支BSD Unix也悄然兴起,随着风头正劲的BSD,另一个老牌Shell也粉墨登场,它就是加州大学Berkeley分校于20世纪70年代末开发,作为2BSD UNIX系统的一部分发布的C Shell(简称为csh)。它的主要开发者是Bill Joy,Bill Joy被誉为软件爱迪生,是前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。

        C Shell提供了很多标准的Bourne Shell不具备的功能。C shell基于C语言,作为编程语言使用时,语法也类似于C,所以程序员可能会很喜欢它。此外,C Shell还提供了增强交互使用的功能,如作业控制、命令行历史和别名等。当然,C Shell的缺点和其优点一样明显,由于它是为大型机设计并增加了很多新功能,所以,C shell在小型机器上运行可能比较慢。跟为麻烦的是,即使在大型机上,C Shell的速度也不如Bourne Shell,而这个问题,在当时的硬件条件下可以说是致命弱点了。
 
  C Shell之后又出现了TC Shell,它是C Shell的扩展版本,且具有完全兼容性。新增的功能包括:命令行编辑(如vi)、历史清单的滚动、高级的文件名功能、变量和命令补全、拼写纠错、作业调度、账户自动上锁和注销、历史清单中增加时间戳等。新增的功能确实很多。
 
  人们经常会问“TC shell中的T到底代表什么含义呢?”这就要涉及到一段历史。1976年,DEC发布了一种新的虚拟内存操作系统——TOPS-20,这种操作系统基于 TENEX,可以被美国国内的多个研究人员同时使用。TOPS-20最显著的特点是“遗忘识别”,也称为“命令补全”,用户可以借助Esc键获取大多数的命令或助记符,从而使得系统能正常运行。TC shell的创建者受到TENEX/TOPS-20的这个功能以及其他功能的影响,开发了csh的一种版本,并模仿TENEX的名称,将这种shell称为TENEX C shell,简称为TC shell、tc-shell或tcsh.这样,Bourne Shell和C Shell共存的格局形成了,使得当时的UNIX用户有了选择的权利,有了选择就会有争议,两大主流Shell即丰富了用户的选项,同时也导致了很长一段时间内,人们对哪个Shell更好的争论。就这样,时间到了20世纪80年代中期,AT&T的David Korn推出了Korn Shell(简称为ksh)。Korn Shell于1986年发布,并在1988年UNIX的SVR4版本发布时正式成为它的一部分。
 
  Korn Shell其实是Bourne shell的一个扩展集,它提供了对Bourne shell的向上兼容性,并且融入入了许多C Shell中受大家欢迎的功能,在兼收并蓄的同时,并没有牺牲速度和效率,恰恰相反,Korn Shell本身很快速和高效。Korn Shell经历了许多版本,虽然1993版正逐渐流行,目前用得最广泛的还是1988版,时至今日,Korn Shell几乎是多数Unix的标准Shell. Korn Shell推出后,又出现了Z Shell(zsh),它是Korn Shell的克隆版,集成了TC shell的一些功能。Z shell的作者是Paul Falsted,大家可以从网上免费获的。
 二、Shell的今生-重归一统
   Shell发展到今天,几乎没有什么悬念了,主要是受到图形界面(GUI)技术兴起冲击,大家操作计算机的方式也发生了质的改变,文字界面由主流变为辅助。在Unix领域,是Korn Shell的天下,而在Linux的地盘,则是Bash一统江山,Bash是Bourne Again Shell的缩写,自由软件基金会于开发出Bash,它的设计符合了IEEE POSIX P1003.2/ISO 9945.2 Shell和工具标准。
 
  Bourne Again shell诞生于1988年1月10日,作者是Brian Fox,后来由Chet Ramey对它进行维护、加强以及修改Bug.Bash的第一个版本是0.99.现在的版本(到目前为止的)是2.05版,它主要是对2.0版本进行了加强,大家要知道自己使用的是哪个Bash版本,可以使用Bash的“—— version”选项来查看。

         下面来谈一下Bash的突出特点,主要表现在交互和编程两方面,Bash都提供了很多Bourne Shell没有的功能,当然,原来在Bourne Shell下编写的脚本无需修改就可以在Bash下运行。Bash融合了C shell和Korn shell最有用的功能。Bash对Bourne Shell的改进包括:命令行历史与编辑、作业控制、函数、别名、数组、整数运算(底数可以是2~64),以及Korn Shell的一些功能,如扩展的元字符,用于生成菜单的select循环和let命令等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值