Rover12421's Blog

The End.

各种类型的Unix Shell

在学习或使用shell时,我们发现shell通常与UNIX/Linux操作系统的不同版本相关联。例如,Bourne和Korn shell经常与AT&T UNIX关联,C shell与Berkeley UNIX关联,而Bash shell与Linux关联。下面我们就来看一下各种不同类型的shell。

在UNIX/Solaris中,主要有两种类型的shell:

The Bourne Shell(包括sh, ksh和bash)

The C Shell (包括csh和tcsh)

Bourne shell (sh)是Steve Bourne在贝尔实验室时编写,1978年随Version 7 Unix首次发布。Bourne Shell是最早出现在UNIX系统上的shell,因而人们习惯将其称为“the Shell”。与Bourne shell 兼容的有:

Almquist shell (ash):ash Shell是由Kenneth Almquist编写的,是Linux中占用系统资源最少的一个小Shell,它只包含24个内部命令,因而使用起来很不是很方便。

Bourne-Again shell(bash):bash是Linux系统默认使用的Shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的Shell。它有以下的一些特色:

可以使用类似DOS下面的doskey的功能,用上下方向键查阅和快速输入并修改命令。
自动通过查找匹配的方式,给出以某字串开头的命令。
包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。
Korn shell(ksh):它由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完全向上兼容 Bourne shell 并包含了 C shell 的很多特性,例如贝尔实验室用户需要的命令编辑。

Z shell(zsh):zsh是Linux最大的Shell之一,由Paul Falstad完成,共有84个内部命令。如果只是一般的用途,是没有必要安装和使用这样的Shell的。

C shell(csh)是Unix shell的另一种shell,由Bill Joy在BSD系统上开发。C shell脱胎于Unix第六版的/bin/sh,也是Bourne shell的前身。这种shell的语法类似于C语言,与Bourne shell相比,C shell有不少特别的功能,比如aliases(别名)、command history(命令的历史)。目前C shell已不再被广泛使用,后继者包括Tenex C shell(tcsh)、Korn shell(ksh)、GNU Bourne-Again shell(bash)。与C shell 兼容的有:

TENEX C shell (tcsh):C shell的扩展版本,且具有完全兼容性。

除了上面两种类型的shell,另外还有一些其他的shell:

fish, 第一次发布于2005年。

rc shell (rc) Plan 9系统的shell,由Tom Duff在贝尔实验室时编写。随后移植回 Unix 和其他的操作系统。

es shell (es) 一个函数式编程的rc兼容shell,编写于二十世纪九十年代中期。

scsh (Scheme Shell)

下面的一些shell仅存于历史了:

Thompson shell (sh) 第一个 Unix shell,由Ken Thompson在贝尔实验室时编写。1971年至1975年随Unix第一版至第六版发布。

PWB shell (sh) Thompson shell 的一个版本,由John Mashey和他人在贝尔实验室时改进。1976年随PWB UNIX发布。

Comments