Shell 就是一个程序,它接受从键盘输入的命令, 然后把命令传递给操作系统去执行。换句话说,Shell 是一个命令语言解释器(command-language interpreter),你在提示符下输入的每个命令都由shell先解释然后传Linux内核。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。

在Linux 和 UNIX系统里有多种不同的 Shell可以使用。最常用的几种是 Bourne shell (sh)C shell(csh),和Korn shell (ksh)。三种Shell都有它们的优点和缺点。Bourne shell 的作者是 Steven Bourne。它是 UNIX 最初使用的Shell并且在每种 UNIX 上都可以使用。Bourne shell 在 Shell编程方面相当优秀,但在处理与用户的交互方面作得不如其他几种 Shell。

Shell脚本(shell script),是一种为shell编写的脚本程序。业界所说的shell通常都是指shell脚本,但同学要知道,shell和shell script是两个不同的概念。下面就是一个简单的创建shell_cut文件夹并在其中生成10个空文本文件的Shell脚本。

#!/bin/sh
cd ~
mkdir shell_tut
cd shell_tut

for ((i=0; i<10; i++)); do
	touch $i.txt
done

Bash 是Unix Shell中的一种,为Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。

Bash是 Bourne shell 的扩展 Bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。总的来说,Bash不仅是一个满足POSIX规范的shell,还有很多扩展。


Steve Bourne:Bourne Shell 之父简介.

Shell参考资料.