nodejs hashbang 执行

在 linux 系统中,执行 node 脚本一般通过 node ./xxx.js 的形式。这与执行 shell 脚本直接输入脚本名称(./xxx.sh)不太一样。那么,node 脚本能不能如 shell 脚本一样直接执行呢?答案是:可以。

node 是支持 hashbang 的。hashbang 也称为 shebang,是用来告诉系统用什么解释器程序执行当前脚本。使用方法是在脚本开头用 #! 的形式指定解释器。

#!/usr/bin/env node

/usr/bin/env 是用来告诉系统到 PATH 里动态查找解释器。这可以让不同用户都可以执行脚本。如果安装的 node 没有添加到 PATH,可以直接指定 node 安装路径。

#!where/is/node

说明部分完了,可以实践了。新建一个脚本,比如 hello.js

#!/usr/bin/env node
const a = 'hello'
console.log(a)

然后执行:

./hello.js

然后就(可能)报错了:

hash ./hello.js permission denied

这是因为文件没有执行权限。需要给文件添加执行权限。

chmod u+x ./hello.js

然后就可以顺利执行了。