shell简介
操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作
系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结
果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立
即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell
和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个
文件里面。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为
shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你
签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是
读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有两大类shell
Bourne shell (包括 sh, ksh, and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
最初的UNIX shell是由Stephen R. Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的
,这就是Bourne shell。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne
shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用
Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文
件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,
shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用
户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、
别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了
改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交
互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学
计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命
令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而
是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的
Linux(Red Hat, Slackware, Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是
bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。
在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的shell:
AIX 下是Korn Shell.
Solaris和FreeBSD缺省的是Bourne shell.
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.
【TIP】
#!/usr/bin/sh的用途
shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是
用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。
阅读(631) | 评论(0) | 转发(0) |