如果您的脚本供Node开发人员使用,则绝对应该使用
#!/usr/bin/env node
不必试图与只安装Node的用户兼容nodejs
。
理由:
- 这就是很酷的孩子们正在做的事情,如果您也不这样做,那么您就不会很酷。主要节点项目,如jshint,因果报应,凉亭,甚至NPM简单地使用
#!/usr/bin/env node
作为家当他们可执行的脚本。
- 因为很酷的孩子正在这样做,所以在Ubuntu上使用Node的任何人都将设置
/usr/bin/node
为的符号链接nodejs
。有高度看说明书上堆栈溢出这里这样做,并在网上所有。甚至有一个nodejs-legacy
软件包的全部目的是为您创建此符号链接。使用Node的人知道如何在Ubuntu上解决此问题,如果他们想使用几乎用Node编写的任何软件,就必须这样做。
- 这个问题似乎在Ubuntu 14.04上似乎不再存在。我只是清除Node并运行一个,
apt-get install nodejs
并将其创建/usr/bin/node
为的符号链接/etc/alternatives/node
。我怀疑受此问题困扰的人正在减少。
即使您是针对不懂Node的人的,也可能仍要使用#!/usr/bin/env node
,nodejs-legacy
如果您认为有必要,可能会在安装文档中添加手动创建符号链接或安装软件包的可能。请注意,如果有nodejs
但没有空的人node
尝试使用上述shebang运行您的程序,他们将看到:
/ usr / bin / env:节点:没有这样的文件或目录
和谷歌搜索,这将在第一结果和很多时候在第一页上为他们提供修复。
如果您真正地急切地希望确保用户可以在nodejs
可用但node
不可用的系统(或node
实际上是“业余分组无线节点”程序的系统)上运行您的软件,那么您可以使用此“两行shebang”来自Unix和Linux Stack Exchange:
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
但是当Node世界几乎没有其他人时,您真的需要这样做吗?