Nor*_*sey 108
历史(不是通过研究获得的,而是通过花费太多时间与贝尔实验室的人一起闲逛获得的):
一开始(如果你认为开始是 Unix 版本 7)是 Bourne shell。Steve Bourne 是第一个表明控制用户交互的外壳可以是用户程序而不是操作系统的特殊部分的人。历史性突破。shell 本身对于脚本编写来说相对干净,但没有命令行编辑或作业控制。Bourne 的Unix Shell 简介对今天的初学者仍然有用。
编辑:我忽略了同样来自 Multics 的 Ken Thompson 和 John Mashey 的一些“史前史”。我确信 Bourne 知道所有这些工作(他在同一个实验室,1127,在贝尔实验室),但 Bourne 的外壳是确定的,而且早期的工作几乎没有影响,除非由 Steve Bourne 解释。比如,虽然Ken后来写了Plan 9 C编译器,对Plan 9影响很大,但是Tom Duff关于Plan 9 shell(rc)的论文只提到了Bourne的shell,没有提到Thompson的shell。
shell 只是一个用户程序,所以任何人都可以编写一个。当第 7 版 Unix 在新泽西州创建时,伯克利 Unix 正在加利福尼亚州创建。伯克利的 Bill Joy 写csh了 C shell。Joy 添加了作业控制和历史记录,以及后来的命令行编辑,但不知道 Bourne 的工作,因此他的语言基于 Thompson shell(我在上一个项目符号中认为它是“史前的”)。Unix 社区喜欢工作控制,但他们也喜欢 Bourne 的语言。对于针对 csh 语言的不是特别好的论战,请参阅Csh 编程被认为有害。一时间,许多人使用csh交互方式来实现其作业控制和历史功能,但使用 Bournesh编写脚本。这种情况并不理想。
编辑:感谢 DigitalRoss 为我整理了csh. 因为我是从那些将 BSD 称为“伯克利异端”的人那里接受教育的,所以我对那里的事实非常缺乏。
贝尔实验室的 Dave Korn 对 Bourne shell 进行了出色的重新设计,以生产 Korn shell (ksh)。它与 Bourne shell 完全向后兼容,sh但提供了大量宝贵的改进。 ksh成为 POSIX 标准的基础,并随 Sun 软件一起提供。(尽管 Bill Joy 离开伯克利帮助创建了 Sun 并且是他们领先的软件人员之一。)
贝尔实验室和 AT&T 愚蠢地未能ksh开源。ksh88被广泛使用,但拥有来源是不合法的。某些人变得如此上瘾,以至于他们成为数字罪犯。
编辑:这真的很愚蠢吗?很难知道。伯克利已经放弃了 Unix,其他公司也很快跟进,但这仍然是企业大师相信 Unix 收费的时代。但结果是:AT&T Unix 在被多次出售给各方之后已经死了。BSD 及其衍生产品还很活跃,但这些被称为“Linux”和“GNU”的新贵事物拥有曾经属于贝尔实验室的很大一部分思想份额。
自由软件基金会做了一个“洁净室”,从头开始实现 POSIX shell,将 Dave Korn 的所有想法作为当前的想法,加上通常的 FSF 风格添加他们自己的新功能,例如可编程完成。他们称它为“Bourne again”外壳,或bash.
在 1990 年代中期 AT&T 开源ksh93,但到那时广泛采用为时已晚。许可协议非常不标准。 bash和ksh发散,ksh从来没有达到与其历史地位相称的市场份额。
课程:
第一个合适的产品推向市场获胜(sh)。
人们喜欢新功能(作业控制、命令完成),但当他们的旧脚本继续工作时,他们会更喜欢它们。
编辑:工程学教授应该把历史留给科学史学家:-)
Dig*_*oss 46
Bash 有两个完全不同的目标。
这是一个很好的壳。它可能是将历史替换csh等一些很酷的功能集成!到 posix 语法中的两个 shell 之一(另一个是 zsh)。它有很多扩展,包括数组。
它是 FSF/GNU shell。在开源世界中,这给了它一种声望。
我还应该补充一点,它并不总是默认值。ash通常用作 /bin/sh 以便虽然bash可能是交互式 shell,但ash它是“只运行命令文件”的 shell。这是因为ash它更小更快,并且包含 posix 特征,所以它是一个适当的子集。使用ash作为一个交互式shell有时是有问题的。例如,在 NetBSD 上,它运行良好,因为它内置了所有功能。这是他们的一个外壳,而它bash是一个外部包。但是在 Linuxash上通常被认为是非交互式的,因此他们在没有历史记录和没有(重要的)行编辑的情况下编译它,理论上它只是用来运行那些巨大的gnu configure脚本。
贝壳的真实历史
更新:在网络上从一个地方到另一个地方复制外壳的历史不准确,人们相信它是可以理解的。我将尝试提供一个准确的版本,并在此处提供一些链接来证实它。
<, >, >>, |, &但它只是goto通过一个在标准输入上寻找的外部程序具有简单的控制语法。那时还没有复杂的 shell 脚本。后来的 shell 将在单独的 fd 上打开命令输入。今天看起来可能很简单,但在 1970 年代计算的恐怖电影中,它是世界上最好的东西。信不信由你,这个古老的贝壳今天有自己的推特流,当然还有主页。csh, 写(象vi)由比尔乔伊在UCB。这是在 GNU readline 和 NetBSD editline 之前,所以用!语法做历史似乎是完全合理的。Csh 添加了当今的大部分 shell 功能,但使用了 csh 语法。csh 没有改变任何语法,无偿或以其他方式。它实际上向后兼容 Thompson shell,并且最初包含 TS 源代码。osh并csh留下流行了一段时间. 没有互联网并且它获得了软件许可,所以在那种环境中,斯蒂芬·伯恩可能不知道乔伊的外壳,乔伊当然也不知道伯恩。当 UCB 获得 VAX 和现已被遗忘的 Unix/32V的预发行版时,这两种 shell 可能第一次相遇。我记得比尔抱怨内存分配。请注意,这两个 shell 都向后兼容 V6 shell,他们只是在不同的方向扩展了语法。 ksh. 最终,csh有半可用的源代码,但它被捆绑在 AT&T 和加州大学之间的诉讼中。尽管如此,这些仍然是 BSD Unix 的辉煌岁月,因为能够负担 50,000 美元费用的成熟公司会购买 AT&T 许可证但安装 4.x BSD 发行版,而大学则免费获得它。csh与 Bourne shell 语法一样多,有些人将两者合并。你有至少tcsh,zsh,bash,和ash。Bourne 语法是“官方的”,是 AT&T 版本的一部分,但在那些日子里,BSD 非常重要,而 Sun(最初是 BSD)分发了大量世界上遇到的 Unix SW。添加@DigitalRoss所说的内容
| 归档时间: |
|
| 查看次数: |
10327 次 |
| 最近记录: |