#!(Shebang)是一个由“#”和“!”构成的字符序列。它们是出现在Shell脚本文件的前两个字符。脚本中的 #! 行(第一行)用于指示一个解释程序。
#! 行的语法格式类似如下所示:
#! INTERPRETER [OPTION]...
注意:INTERPRETER必须是一个程序的绝对路径。
在Linux系统中,当一个内容以#! 开头的脚本作为一个程序运行时,程序加载器会将脚本第一行的#! 之后的内容解析为一个解释程序,然后用这个指定的解释程序替代其运行,并将脚本的路径作为第一个参数传递给解释程序。例如,一个脚本的路径名称是“/home/xw/script”,并且它的内容以如下行开头:
#!/bin/bash
那么程序加载器被指示用解释程序“/bin/bash”替代其运行,并将路径“/home/xw/scrit”(当前shell脚本存放的路径,具体的以自己当前shell脚本存放路径为准 )作为第一个参数传递给解释程序"/bin/bash"。
几乎所有的bash脚本的内容都是以"#!/bin/bash"开头,这确保bash将作为脚本的解释程序,即使该脚本运行在其他shell下。如果bash脚本中没有指定#!行,则会默认使用"#!/bin/sh"作为解释程序,但还是推荐你将bash脚本的第一行设为“#!/bin/bash”。