首页 存档 技术 查看内容

敬畏与热爱Unix考古记:一个“遗失”的shell

2018-3-30 13:00 |来自: 互联网 315 0

摘要: 来源:Leo原文地址:http://coolshell.cn/articles/9410.html 谨以此文纪念伟大的计算机科学巨匠Ken Thompson(http://en.wikipedia.org/wiki/Ken_Thompson)和Dennis Ritchie(http://en.wikipedia.org/wiki/Dennis_R ...

来源:Leo
原文地址:http://coolshell.cn/articles/9410.html
谨以此文纪念伟大的计算机科学巨匠Ken Thompson(http://en.wikipedia.org/wiki/Ken_Thompson)和Dennis Ritchie(http://en.wikipedia.org/wiki/Dennis_Ritchie),并同时向其他所有为Unix发展做出贡献的黑客致敬。

历史的尘埃

Unix作为一个举世闻名的操作系统已有40余年的历史,围绕着这个古老的操作系统的发展又衍生出了一系列外围软件生态群,其中一个非常重要的组件就是shell。它是操作系统最外层的接口,负责直接面向用户交互并提供内核服务,包括命令行接口(CLI)或图形界面接口(GUI)两种形式。以CLI为例,它提供一套命令规范,是一种解释性语言,将用户输入经过解释器(interpreter)输出使其转化成真正的系统调用,实现人机交互的功能。

和操作系统一样,shell也经历了一个漫长的演变史。如今大部分资料讲述最古老的shell都是从1977年的Bourne Shell(http://en.wikipedia.org/wiki/Bourne_shell)说起的,它最初移植到Unix V7(http://en.wikipedia.org/wiki/Version_7_Unix)上,被追认整个shell家族成员的鼻祖,后来的种群都是从其身上分支出来的。

对于1977年之前的历史很多资料大多一笔带过或略过不提。事实上,第一个移植到Unix上的shell却不是Steve Bourne(http://en.wikipedia.org/wiki/Stephen_Richard_Bourne)写的,早在1975年5月,贝尔实验室就对外发布了第一个广泛传播的Unix版本Unix V6(http://en.wikipedia.org/wiki/UNIX_V6)(之前开发的版本只供内部研究之用),其根目录下的/bin/sh是第一个Unix自带的shell,由Ken Thompson写的,因此也被称为Thompson Shell(http://en.wikipedia.org/wiki/Thompson_shell)。甚至,更早可以追溯到1971年的时候,Thompson Shell就作为一个独立于内核的应用程序而实现了,只不过从1975年正式问世到1977年被取代,短短两年的寿命使得它很少为大多数人所认识。

关于Thompson Shell被取代的原因在后文中会给出说明,这里着重介绍一下该shell本身的一些技术细节。坦白讲,关于Thompson Shell的资料有点稀缺,但至少还能从网上找到源代码(http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Dennis_v6/)和在线文档(http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/man)。Thompson Shell本身是由一个不足900行代码的解释器和一些外部命令工具组件(utilities)构成,用K

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部