购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.2 Shell的类别

目前Shell的类别有很多种,如Bourne Shell、C Shell、Bash、ksh、tcsh等,它们各有特点,下面简单介绍一下。

最重要的Shell是 Bourne Shell,这个命名是为了纪念此Shell的发明者Steven Bourne。从1979年起,UNIX系统就开始使用Bourne Shell。Bourne Shell的主文件名为sh,开发人员便以sh作为Bourne Shell的主要识别名称。

虽然Linux系统与UNIX系统一样,可以支持多种Shell,但是Bourne Shell的重要地位至今没有改变,在Linux系统的各个版本中仍然使用sh作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在Linux系统中,用户Shell主要是Bash,但在启动脚本、编辑等很多工作中仍然使用Bourne Shell。

C Shell是广为流行的Shell变种。C Shell主要在BSD版的UNIX系统中使用,其发明者是加利福尼亚大学伯克利分校的Bill Joy。C Shell因为其语法和C语言的语法类似而得名,这也使得UNIX系统工程师在学习C Shell时感到相当方便。

Bourne Shell和C Shell形成了Shell的两大主流派别,后来的变种大都吸取了这两种Shell的特点,如Korn、tcsh及Bash。

Bash是GNU计划的重要工具之一,也是GNU系统中标准的Shell。Bash与sh兼容,所以许多早期开发出来的Bourne Shell程序都可以继续在Bash中运行。现在使用的Linux系统就使用Bash作为用户的基本Shell。

Bash于1988年发布,并在1995—1996年推出了Bash 2.0版本。在这之前,广为使用的版本是1.14版本。Bash 2.0版本增加了许多新的功能,以及具备更好的兼容性。

表2-1详细列出了Shell各类别的具体情况。

表2-1 Shell各类别的具体情况

注意: Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括csh、tcsh(Bash和zsh在不同程度上支持csh的语法)。

本章讲述的脚本编程就是在Bash环境中进行的。不过,在Linux系统中,除了可以支持Bash,还可以支持很多其他的Shell。可以通过/etc/shells文件来查看Linux系统支持的Shell。命令如下:

在Linux系统中,这些Shell是可以任意切换的。命令如下:

用户信息文件/etc/passwd的最后一列就是这个用户的登录Shell。命令如下:

可以看到,root用户和其他可以登录系统的普通用户的登录Shell都是/bin/bash,也就是Linux系统的标准Shell,所以这些用户在登录之后可以执行权限范围内的所有命令。不过,所有的系统用户(伪用户)因为登录Shell是/sbin/nologin,所以不能登录系统。 QyagM38RSUy9dMWKSXDIdORbBVbuKkEw116IlrNbNDa0wR2/3iFbT7xKUUOVTk4W

点击中间区域
呼出菜单
上一章
目录
下一章
×