【发布时间】:2018-03-23 14:16:17
【问题描述】:
当我使用 source 或 ruby 调用脚本时,我没有注意到任何区别。我猜shebang行的好处是,如果您将脚本作为可执行文件运行,环境知道要调用哪个程序。不确定是否是这种情况;但我只是在验证。
【问题讨论】:
-
你的假设是正确的。
#!允许您使用几乎任何任意工具来执行您的程序。
当我使用 source 或 ruby 调用脚本时,我没有注意到任何区别。我猜shebang行的好处是,如果您将脚本作为可执行文件运行,环境知道要调用哪个程序。不确定是否是这种情况;但我只是在验证。
【问题讨论】:
#! 允许您使用几乎任何任意工具来执行您的程序。
source 命令忽略 shebang 行。当 shell 以正常方式调用脚本时(不是 . 或 source),shell 使用 shebang 行为脚本派生正确的解释器。 shebang 行可以包含:
#!/usr/local/bin/perl -w)#!/usr/bin/env bash)。这样做的好处是它可以防止硬编码路径并让 shell 选择特定于环境的路径。在这种情况下,无法向解释器发送参数另见:
【讨论】: