使用 shebang 线的实用价值是什么?

What is the practical value of using a shebang line?

当我用 sourceruby 调用脚本时,我没有注意到任何区别。我猜 shebang 行的好处是,如果您将脚本 运行 作为可执行文件,环境知道要调用什么程序。不确定是否是这种情况;但我只是在验证。

source 命令忽略 shebang 行。当 shell 以正常方式调用脚本时(不是 .source),shell 使用 shebang 行为脚本派生正确的解释器。 shebang 行可以包含:

  • 可以解释脚本的任何可执行文件的直接路径,以及解释器的参数 (#!/usr/local/bin/perl -w)
  • /usr/bin/env 将找到路径 (#!/usr/bin/env bash)。这样做的好处是它可以防止硬编码路径并让 shell 选择环境特定路径。在这种情况下,无法向解释器发送参数

另请参阅: