我正在学习 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
那么任何人都可以 运行 它。
我有:
#!/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
那么任何人都可以 运行 它。