当shell执行一个程序时,会要求UNIX内核启动一个新的进程,以便在该进程里执行所指定的程序。
当系统只有一个shell时,退回到/bin/sh 的机制非常方便,但现行的UNIX系统都会拥有好几个shell,此时就需要一种方式,指定由那个shell来执行所指定的shell脚本。
由此引入了#!这两个字符。
当一个文件种的开头是#!时,内核会扫描改行的其余部分,看是否存在可用开执行程序的解释器的完整路径(注:中间出现任何空白符号都会略过)。下面引入文章片段: