【问题标题】:What does "#!/bin/env" mean (at the top of a node.js script)?“#!/bin/env”是什么意思(在 node.js 脚本的顶部)?
【发布时间】:2013-02-10 05:51:53
【问题描述】:

我发现一些 node.js 项目在其app.js 顶部有这个(如在这个openshift program 中):

#!/bin/env node

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

【问题讨论】:

标签: node.js openshift declare


【解决方案1】:

您的示例中的完整行是:

#!/bin/env node

这仅仅意味着脚本应该使用您当前 PATH 中找到的第一个名为“node”的可执行文件执行。

开头的 shebang (#!) 表示执行以下脚本。 /bin/env 是一个标准的 unix 程序,它查看您当前的环境。任何不是“名称=值”格式的参数都是要执行的命令。有关详细信息,请参阅您的 env 手册页。

【讨论】:

  • 一般来说,我需要在我的节点应用程序中添加这个声明吗?
  • 仅当您希望能够使用./app.js 启动它而不需要键入node app.js 时。有关有用的示例,请查看stackoverflow.com/questions/14517535/…
  • 键入“which env”以获取本地系统上的路径。例如,它可能安装在 /usr/bin/env 中。
  • @chovy ... 有点晚了,但对于 osx,我将 env 符号链接到 bin:sudo ln -s /usr/bin/env /bin/env
  • @AndrewLam #!/usr/bin/env 节点拼写正确。一些平台有 /bin/env 和 /usr/bin/env,但这些通常是因为 /bin 与 /usr/bin 相同。如果您询问这是否仅适用于 linux/unix 风格与 windows,这取决于 - 如果您使用 cygwin 或其他风格的 ,那么是的,这将起作用,但如果您只想从 Windows 资源管理器窗口执行或windows 命令提示符(或 power shell)然后 #!指示使用什么解释器的序列无济于事。在 Windows 和 unix 上,你可以运行 'node app.js' 和任何你有的东西 #!无关紧要。
【解决方案2】:

env 是用于指定解释器的 shell 命令。

【讨论】:

  • 用简单的英语表示env 将在您的$PATH 中找到node 的位置。人们有时会这样做 #!/bin/node#!/usr/local/bin/node 但问题是,您不知道该人可能在哪里拥有他们的节点副本。所以env 程序会为你找到。
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 2011-11-14
  • 1970-01-01
  • 2012-04-19
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多