计算机程序中,shebang指的是出现在文本文件的第一行前两个字符#!
在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如
注意事项:
shebang
,脚本执行的时候,默认用当前shell去解释脚本,即$SHELL
shebang
指定了可执行的解释器,如/bin/bash
/usr/bin/python
,脚本在执行时,文件名会作为参数传递给解释器#!
指定的解释程序没有可执行权限,则会报错"bad interpreter:Permission denied"#!
指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本#!
指定的解释程序不存在,那么会报错"bad interpreter:No such file or directionary"#!
之后的解释程序,需要写其绝对路径(如:#!/bin/bash),他是不会自动到"$PATH"中寻找解释器的#!
这一行将会被忽略掉,解释器当然是用命令行中显示指定的bash。脚本案例
[root@chaogelinux data]# cat test.sh
#!/bin/bash
echo "超哥强啊,奥力给"
执行结果
去掉shebang 运行结果
给test.py添加shebang后运行结果
解释test.sh没有shebang运行正确的问题,当前环境变量中已经声明了shell的解释器了。