"#!/ bin/env"是什么意思(在node.js脚本的顶部)?

hh5*_*188 55 declare node.js openshift

我找到了serval node.js项目,这些项目位于其顶部app.js(如此openshift程序中):

#!/bin/env node
Run Code Online (Sandbox Code Playgroud)

这是什么意思?这是如何运作的?它在哪里有用?

soc*_*onk 66

您的示例中的完整行是:

#!/bin/env node
Run Code Online (Sandbox Code Playgroud)

这只是意味着脚本应该使用在当前PATH中找到的名为"node"的第一个可执行文件来执行.

开始时的shebang(#!)意味着执行以下内容的脚本./ bin/env是一个标准的unix程序,用于查看当前环境.它的任何参数都不是'name = value'格式是要执行的命令.有关更多详细信息,请参阅env联机帮助页.

  • 键入'which env'以获取本地系统上的路径.例如,它可以安装在/ usr/bin/env中. (4认同)
  • @chovy ...有点晚了,但对于osx我将符号链接env到bin:sudo ln -s/usr/bin/env/bin/env (3认同)
  • 只有你想能够使用`./ app.js`启动它而不需要输入`node app.js`.有用的例子可以查看http://stackoverflow.com/questions/14517535/directly-call-globally-installed-node-js-modules (2认同)
  • 有没有办法让这个在Mac上工作? (2认同)

Chr*_*det 8

env 是一个用于指定解释器的shell命令.

  • 用简单的英语表示`env`将在$ PATH中找到`node`的位置.人们有时做`#!/ bin/node`或`#!/ usr/local/bin/node`但问题是,你不知道这个人可能有他们的节点副本.所以`env`程序为你找到了. (14认同)