Shell脚本是包含Shell命令的文本文件。当调用Bash时将此类文件用作第一个非选项参数,并且-c和-s选项均未提供时,Bash将从文件中读取并执行命令,然后退出。这种操作模式将创建非交互式Shell。Shell先在当前目录中搜索文件,如果找不到,再在$PATH目录中查找。
当Bash运行Shell脚本时,它将特殊参数0设置为文件名,而不是Shell的名称,并且位置参数设置为其余参数。
使用chmod命令打开执行位,可以使Shell脚本可执行。 当Bash在$PATH中找到了这样的文件,它会生成一个subshell来执行它。所以,如果filename是一个可执行的Shell脚本时,
filename arguments
等同于
bash filename arguments
该subshell自身会重新初始化,就像调用了一个新的Shell来解释脚本,且子级保留了父级记住的命令的位置。
如果脚本的第一行以两个字符“#!”开头,则该行的其余部分指定程序的解释器。因此,可以指定Bash,awk,Perl或其他解释器,然后使用该语言编写脚本文件的其余部分。
解释器的参数由三部分组成:
一个可选参数组成,位于脚本文件第一行的解释器名称之后
脚本文件的名称
然后是其余参数。
Bash脚本通常以#! /bin/bash,这样确保了Bash将被用来解释脚本,即使该脚本在另一个shell下执行。