【问题标题】:Is the Shebang (#!) standardized?Shebang (#!) 是否标准化?
【发布时间】:2016-09-14 16:06:28
【问题描述】:

是Shebang#!,例如

#!/bin/sh

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

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

【问题讨论】:

    标签: posix standards language-lawyer shebang lsb


    【解决方案1】:

    POSIX 未指定#! 的效果。来自2.1 Shell介绍

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

    【讨论】:

    • 引文是关于 shell 命令语言的。引用的部分是说如果foo 有一个shebang(也就是说,如果它的第一行以#!开头),则sh foo 的结果未指定,但它没有说明直接执行./foo。
    【解决方案2】:

    来自source:

    Bash 脚本通常以 #! /bin/bash(假设 Bash 有 已安装在 /bin 中),因为这确保了 Bash 将用于 解释脚本,即使它在另一个 shell 下执行。

    您也可以查看The #! magic, details about the shebang/hash-bang mechanism on various Unix flavours

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 2020-02-25
      • 2020-03-29
      • 2019-08-06
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      相关资源
      最近更新 更多