我正在学习 shebangs。如何让它在 Mac 终端中与 node.js 一起工作?

I'm learning about shebangs. How do I make it work with node.js in a Mac terminal?

我有:

#!/usr/bin/env node
console.log("It works!");

了解到env找到node程序,用node解释。我检查了 env 存在于 /usr/bin.

当我调用 node itworks.js 时它起作用并输出 It works!。但是,据我了解,由于 shebang,我应该只能在没有 node 的情况下调用 itworks.js。但是当我发出这个命令时,它说 -bash: itworks.js: command not found.

有人可以帮我让 shebang 工作吗?

首先你需要使文件可执行:

chmod +x itworks.js

那么你也需要指定路径来调用它。或者:

/where/it/is/on/disk/itworks.js

或:

./itworks.js

原因:

-bash: itworks.js: command not found

是因为 bash 在 PATH 环境变量的目录中查找程序,而您没有说明文件的位置 - 它不会在当前目录中查找,除非您告诉它。

您可以使用当前目录快捷方式 . 更新 PATH 变量,但这可能存在安全风险,因此大多数 运行 程序都是这样的:

./itworks.js

当然,如果您将脚本全部放在一个目录中,那么您可以将其添加到 PATH 中的一个启动文件中。例如,如果您的主目录中有一个名为 bin 的目录,其中包含您的脚本:

PATH=$PATH:"$HOME/bin"

您还需要为脚本添加执行权限:

chmod u+x itworks.js

u表示我们只给当前用户执行这个文件的权限。如果我们省略 u 那么任何人都可以 运行 它。