Shell演义之前世今生篇
作者:何晓龙
一、Shell的前世-群雄并起
在Unix以及类Unix系统中,大家经常要使用Shell,它的起源可以追溯到操作系统的鼻祖-UNIX.1969年,AT&T 贝尔实验室的Ken
Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户,多任务操作系统, Ken
Thompson照片如图1所示.
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
图1 Unix之父Ken Thompson(大胡子)
过了不久,Dennis
Richie也加入了这个项目,在他们共同努力下UNIX诞生了,Ken Thompson和Dennis Richie的照片如图2.
id="_x0000_i1026" type="#_x0000_t75" style=''width:6in;height:345.75pt''>
图2 Ken Thompson和Dennis Richie合作开发
在他们的开发过程中,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,Bill Joy的照片如图3.
type="#_x0000_t75" style=''width:399.75pt;height:564pt''>
图3 软件爱迪生Bill
Joy
C Shell提供了很多标准的Bourne
Shell不具备的功能.C shell基于C语言,作为编程语言使用时,语法也类似于C,程序员可能会很喜欢它.此外,C Shell还提供了增强交互使用的功能,如作业控制、命令行历史和别名等.当然,C
Shell的缺点和其优点一样明显,它是为大型机设计并增加了很多新功能,,C
shell在小型机器上运行可能比较慢.跟为麻烦的是,即使在大型机上,C
Shell进行许可.
转载请注明 作者:何晓龙,出处:[url]www.UbuntuChina.com[/url]
原始链接:[url]http://www.ubuntuchina.com/viewthread.php?tid=1703&extra=page=1[/url]
|