我正在尝试为node.js创建一个可以在多种环境下工作的脚本。特别是对我来说,我正在OS X和Ubuntu之间来回切换。在前者中,Node安装为node,而在后者中,安装为nodejs。在脚本的顶部,我可以有:
node
nodejs
#!/usr/bin/env node
要么
#!/usr/bin/env nodejs
只要安装了node,我宁愿脚本在任一环境中都作为可执行文件运行,而不是让一个或另一个必须指定命令(./script-name.jsvs. node script-name.js)。
./script-name.js
node script-name.js
有什么方法可以指定备份hashbang或与node.js兼容的备份哈希吗?
如果您的脚本是供Node开发人员使用的,则绝对应该使用
不必试图与只安装Node的用户兼容nodejs。
理由:
/usr/bin/node
nodejs-legacy
apt-get install nodejs
/etc/alternatives/node
即使您是针对不懂Node的人的,也可能仍要使用#!/usr/bin/env node,nodejs- legacy如果您认为有必要,可能会在安装文档中添加手动创建符号链接或安装软件包的可能。请注意,如果有其他人nodejs但不可node用的人尝试使用上述shebang运行您的程序,他们将看到:
nodejs- legacy
/ usr / bin / env:节点:没有这样的文件或目录
和谷歌搜索,这将使他们在第一结果中获得修复,并在第一页上获得多次修复。
如果您真正地急切地希望确保用户可以在nodejs可用但node不可用的系统上(或node实际上在“ 业余分组无线节点”程序所在的系统)上运行您的软件,那么您可以使用此“两行shebang”来自Unix和LinuxStackExchange:
#!/bin/sh ':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@" console.log('Hello world!');
但是当Node世界中几乎没有其他人时,您真的需要这样做吗?