Shebang
Shebang
计算机程序中, shebang 指的是出现在文本文件的第一行前两个字符 #!
在Unix系统中,程序会分析 shebang 后面的内容,作为解释器的指令,例如
-
以 #!/bin/bash 开头的文件,程序在执行的时候会调用 /bin/bash ,也就是bash解释器
-
以 #!/usr/bin/python 开头的文件,代表指定python解释器去执行
-
以 #!/usr/bin/env 解释器名称,是一种在不同平台上都能正确找到解释器的方法
注意事项:
- 如果脚本未指定 shebang ,脚本执行的时候,默认用当前shell去解释脚本,即$SHELL
[root@localhost~]# echo $SHELL
/bin/bash
- 如果 shebang 指定了可执行的解释器,如 /bin/bash /usr/bin/python ,脚本在执行时,文件名会作为参数传递给解释器
- 如果 #! 指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。
- 如果 #! 指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。
- 如果 #! 指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。
-
! 之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它时不会自动到$PATH中寻找解释器的。
- 如果你使用 “bash test.sh”这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然时用命令行中显示指定的bash
本文来自博客园,作者:hmiking,转载请注明原文链接:https://www.cnblogs.com/oldit/p/17811967.html