`

unix shebang 符号

阅读更多
在计算机科学中,Shebang(也称为Hashbang)是一个由井号和叹号构成的字符串行(#!),其出现在文本文件的第一行的前两个字符。 在文件中存在Shebang的情况下,类Unix操作系统的程序载入器会分析Shebang后的内容,将这些内容作为解释器指令,并调用该指令,并将载有Shebang的文件路径作为该解释器的参数

例如,以指令
#!/bin/sh
开头的文件在执行时会调用Bourne shell(或兼容的shell,例如bash、dash等)。这行内容也是shell脚本的标准起始行。

由于"#"符号在许多脚本语言中都是注释标识符,Shebang的内容会被这些脚本解释器自动忽略。 在"#"字符不是注释标识符的语言中,例如Scheme,解释器也可能忽略以"#!"开头的首行内容,以提供与Shebang的兼容性

Shebang这一语法特性由#!开头,即井号和叹号。 在开头字符之后,可以有一个或数个空白字符,后接解释器的绝对路径,用于调用解释器。 在直接调用脚本时,调用者会利用Shebang提供的信息调用相应的解释器,从而使得脚本文件的调用方式与普通的可执行文件类似

下面列出了一些典型的shebang解释器指令:

#!/bin/sh — 使用sh,即Bourne shell或其它兼容shell执行脚本
#!/bin/csh — 使用csh,即C shell执行
#!/usr/bin/perl -w — 使用带警告的Perl执行
#!/usr/bin/python -O — 使用具有代码优化的Python执行
#!/usr/bin/php — 使用PHP的命令行解释器执行

用途

解释器指令允许脚本和数据文件充当系统命令,无需在调用时由用户指定解释器,从而对用户和其它程序隐藏其实现细节。
假设/usr/local/bin/foo中有一以下行开头的Bourne shell脚本
#!/bin/sh -x
而它被如此调用("$"是命令提示符)
$ foo bar
该命令的输出等同于
$ /bin/sh -x /usr/local/bin/foo bar
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics