shell脚本需要指定使用什么解释器来解释这个脚本,shell脚本中#!/bin/bash表示当前脚本由/bin/bash这个程序来执行
Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、bash、C shell(csh)和Korn shell(ksh)
(1)Bourne Shell(即sh)是UNIX最初使用的shell,平且在每种UNIX上都可以使用。Bourne Shell在shell编程方便相当优秀,但在处理与用户的交互方便作得不如其他几种shell。
(2)LinuxOS默认的是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与Bourne Shell完全兼容,并且在Bourne Shell的基础上增加,增强了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面
(3)C Shell是一种比Bourne Shell更适合的变种Shell,它的语法与C语言很相似。Linux为喜欢使用C Shell的人提供了Tcsh。
Tcsh是C Shell的一个扩展版本。Tcsh包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似C语言的语法,他不仅和Bash Shell提示符兼容,而且还提供比Bash Shell更多的提示符参数。
(4)Korn Shell集合了C Shell和Bourne Shell的优点并且和Bourne Shell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
脚本文件中不加#!/bin/bash可以吗?
因为一般linux用户的默认shell都是bash,脚本运行时候会用用户的默认shell来解释脚本(如果#!/bin/bash不写的话),但很多unix系统可能会用bourne shell、csh或者ksh等来作为用户默认shell,如果脚本中包含的有符合bash语法却又让其他shell无法解释的代码存在,那么就必须在第一行写上这个(当然还要这个系统上安装了bash),以保证脚本的正常运行