使用 shebang 线的实用价值是什么?
What is the practical value of using a shebang line?
当我用 source
或 ruby
调用脚本时,我没有注意到任何区别。我猜 shebang 行的好处是,如果您将脚本 运行 作为可执行文件,环境知道要调用什么程序。不确定是否是这种情况;但我只是在验证。
source
命令忽略 shebang 行。当 shell 以正常方式调用脚本时(不是 .
或 source
),shell 使用 shebang 行为脚本派生正确的解释器。 shebang 行可以包含:
- 可以解释脚本的任何可执行文件的直接路径,以及解释器的参数 (
#!/usr/local/bin/perl -w
)
- /usr/bin/env 将找到路径 (
#!/usr/bin/env bash
)。这样做的好处是它可以防止硬编码路径并让 shell 选择环境特定路径。在这种情况下,无法向解释器发送参数
另请参阅:
- Should I use a Shebang with Bash scripts?
- How does the #! shebang work?
- Does the shebang determine the shell which runs the script? - Unix & Linux Stack Exchange
- Why does Python in Linux require the line #!/usr/bin/python? - AskUbuntu
当我用 source
或 ruby
调用脚本时,我没有注意到任何区别。我猜 shebang 行的好处是,如果您将脚本 运行 作为可执行文件,环境知道要调用什么程序。不确定是否是这种情况;但我只是在验证。
source
命令忽略 shebang 行。当 shell 以正常方式调用脚本时(不是 .
或 source
),shell 使用 shebang 行为脚本派生正确的解释器。 shebang 行可以包含:
- 可以解释脚本的任何可执行文件的直接路径,以及解释器的参数 (
#!/usr/local/bin/perl -w
) - /usr/bin/env 将找到路径 (
#!/usr/bin/env bash
)。这样做的好处是它可以防止硬编码路径并让 shell 选择环境特定路径。在这种情况下,无法向解释器发送参数
另请参阅:
- Should I use a Shebang with Bash scripts?
- How does the #! shebang work?
- Does the shebang determine the shell which runs the script? - Unix & Linux Stack Exchange
- Why does Python in Linux require the line #!/usr/bin/python? - AskUbuntu