Shebang(也称为 hashbang 或 pound bang)是 Unix/Linux 系统中脚本文件开头的特殊符号组合,形式为 #!
。它的作用是告诉操作系统使用哪个解释器来执行该脚本。
具体解释:
-
#!
:
• 这是 shebang 的起始符号。#
在 Unix/Linux 系统中通常表示注释,但#!
组合在一起时,系统会将其识别为 shebang。 -
解释器路径:
• 在#!
后面,你需要指定解释器的路径。例如:
◦#!/usr/bin/python3
:使用 Python 3 解释器。
◦#!/bin/bash
:使用 Bash shell 解释器。
作用:
• 当你直接运行一个脚本时(例如:./script.py
),操作系统会读取 shebang 行,并使用指定的解释器来执行脚本。
• 如果没有 shebang 行,操作系统会默认使用当前的 shell 来执行脚本,这可能导致脚本无法正常运行(尤其是像 Python、Perl 等脚本)。
示例:
假设你有一个 Python 脚本 hello.py
,内容如下:
#!/usr/bin/python3
print("Hello, World!")
如果你在终端中运行这个脚本:
./hello.py
操作系统会读取 shebang 行,并使用 /usr/bin/python3
来执行脚本,输出 Hello, World!
。
常见 shebang 示例:
-
Python 3:
#!/usr/bin/python3
或更具可移植性的方式:
#!/usr/bin/env python3
-
Bash shell:
#!/bin/bash
-
Perl:
#!/usr/bin/perl
-
Ruby:
#!/usr/bin/ruby
注意事项:
-
可执行权限:
• 在运行脚本之前,确保脚本具有可执行权限。可以使用chmod +x script.py
来添加执行权限。 -
env
的使用:
• 使用#!/usr/bin/env python3
是一种更灵活的方式,它会从系统的PATH
环境变量中查找python3
,而不是硬编码解释器路径。这种方式更具可移植性。 -
Windows 系统:
• Shebang 在 Windows 系统中无效。Windows 系统通常通过文件扩展名(如.py
、.sh
)来识别脚本类型,并使用默认的程序打开。
总结:
Shebang 是 Unix/Linux 系统中脚本文件开头的 #!
符号组合,用于指定脚本的解释器。它是脚本能够正确执行的关键部分,尤其是在多语言环境中(如 Python、Bash、Perl 等)。