系列文章目录
Shell的历史
1964年,美国AT&T公司的贝尔实验室、麻省理工学院及美国通用电气公司共同参与研发一套可以安装在大型主机上的多用户、多任务的操作系统,名为Multics(Multiplexed Information and Computing System),运行在美国通用电气公司的大型机GE-645上。但因为整个目标过于庞大,杂糅了太多特性,Multics最终以失败告终。
5年后,1969年AT&T退出了Multics的开发,但是公司其中一位开发者 肯-汤普逊则继续为GW-645开发软件。大约在1970年,另外一位开发者丹尼斯-里奇也加入了开发队伍。在汤普逊和里奇的带领下,他们启动了另外一个新的多用户、多任务的操作系统的项目UNICS(UNiplexed Information and Computing System).后来人们取这个单词的谐音,把这个项目称为我们现在熟知的UNIX.
最初UNIX是汇编语言编写,1973年汤普逊和里奇使用C语言重新编写了UNIX,使得UNIX得以移植到其他小型机上面。
于此同时,第一个重要的标准UNIX Shell于1979年末在UNIX第7版中推出,并以作者 史蒂夫-伯恩(Stephen Bource)的名字命名,叫做Bourne Shell,简称sh. sh当时主要用于系统管理任务的自动化。虽然sh很受欢迎,但是缺失交互的功能,如命令作业控制,历史和别名等
于此同时,UNIX的另外一个著名分支BSD UNIX也悄然兴起,随着风头正劲的BSD,另外一个老牌的Shell也登场了,它就是 比尔-乔伊 (Bill Joy)在加州大学伯克利分校读书期间开发的C Shell,简称csh。乔伊是Sun公司的创始人之一,当年在伯克利分校主持最早版本的BSD。C Shell基于C语言,语法类似于C。因为它为大型机设计并增加了很多新的功能,导致运行效率较慢。
C Shell之后又出现了许多其他的Shell程序,主要包括Tenex C Shell、Korn Shell以及GNU Bourne-Again Shell(bash)。目前最流行的就是bash
对各种Shell程序概况如下:
- Bourne Shell:标识为sh,该Shell由Steve Bourne在贝尔实验室时编写。在许多UNIX系统中,该Shell是root用户的默认的Shell
- Bourne-Again Shell:标识为bash,该Shell由Brian Fox在1987年编写,是绝大多数Linux发行版的默认的Shell
- Korn Shell:标识为ksh,该Shell由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完全向上兼容sh并包含了C Shell里的许多特性
- C Shell:标识为csh,该Shell由Bill Joy在BSD系统上开发。由于其语法类似于C语言被成功C Shell
这些Shell程序,语法上或多或少有一些区别,目前我们用的最多的就是bash了。