Shebang

发布时间 2023-11-06 11:41:12作者: hmiking

Shebang

计算机程序中, shebang 指的是出现在文本文件的第一行前两个字符 #!

在Unix系统中,程序会分析 shebang 后面的内容,作为解释器的指令,例如

  1. 以 #!/bin/bash 开头的文件,程序在执行的时候会调用 /bin/bash ,也就是bash解释器

  2. 以 #!/usr/bin/python 开头的文件,代表指定python解释器去执行

  3. 以 #!/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

欢迎关注我的CSDN个人博客知乎