Shebang(#!)标准化了吗?

jot*_*tik 5 standards posix shebang language-lawyer lsb

Shebang #!,例如

#!/bin/sh
Run Code Online (Sandbox Code Playgroud)

在Linux标准库或任何Open Group标准或其他地方正式标准化的脚本可执行文件前面?如果是,请提供参考和详细信息.

注意:我最感兴趣的是shell脚本以及任何可执行文件的含义.换句话说,任何标准都要求#!在可执行文件的开头解释一下吗?但是,标准中对它的任何其他引用也是受欢迎的.

Jen*_*ens 6

POSIX留下了#!未指定的效果.从2.1 Shell介绍

shell从文件(参见sh),-c选项或从POSIX.1-2008的系统接口卷中定义的system()和popen()函数读取其输入.如果shell命令文件的第一行以字符"#!"开头,则结果未指定.

  • 该引文是关于 shell 命令语言的。引用的部分说,如果“foo”有 shebang(即,如果它的第一行以 #! 开头),则“sh foo”的结果是未指定的,但它没有提到直接执行“./foo”。 (2认同)