gpt4 book ai didi

node.js - 适用于 Node.js 脚本的 hashbang

转载 作者:IT老高 更新时间:2023-10-28 21:50:52 25 4
gpt4 key购买 nike

我正在尝试为 node.js 创建一个可以在多种环境中工作的脚本。特别是对我来说,我在 OS X 和 Ubuntu 之间来回切换。在前者中,Node 安装为 node,但在后者中,它是 nodejs。在我的脚本顶部,我可以:

#!/usr/bin/env node

#!/usr/bin/env nodejs

只要安装了 Node ,我宁愿让脚本作为任一环境的可执行文件运行,而不是让一个或另一个必须指定命令 (./script-name.jsnode script-name.js)。

有没有办法指定一个备份 hashbang 或在任何一种情况下都兼容 node.js?

最佳答案

如果您的脚本是供 Node 开发人员使用的,那么您绝对应该只使用

#!/usr/bin/env node

不必费心尝试与仅将 Node 安装为 nodejs 的人兼容.

理由:

  • 这就是酷 children 正在做的事情,如果你不这样做,你就不酷。 jshint等主要 Node 项目, karma , bower , 甚至 npm只需使用 #!/usr/bin/env node作为他们可执行脚本的 shebang。
  • 因为酷 children 都在做,任何在 Ubuntu 上使用 Node 的人都设置了 /usr/bin/node作为 nodejs 的符号链接(symbolic link).有highly-viewed instructions在 Stack Overflow 和整个网络上执行此操作。甚至还有 nodejs-legacy包,其全部目的是为您创建此符号链接(symbolic link)。使用 Node 的人知道如何在 Ubuntu 上解决这个问题,如果他们想使用几乎所有用 Node 编写的软件,他们必须
  • 这个问题在 Ubuntu 14.04 上似乎已经不存在了;我刚刚清除了 Node 并运行了 apt-get install nodejs它创造了/usr/bin/node作为 /etc/alternatives/node 的符号链接(symbolic link).我怀疑受此问题困扰的人正在减少。

即使您的目标是不识字的人,您可能仍想使用 #!/usr/bin/env node ,也许增加了手动创建符号链接(symbolic link)或安装 nodejs-legacy 的可能需要如果您认为有必要,请打包到您的安装文档中。请注意,如果有人使用 nodejs但不是 node available 尝试使用上述 shebang 运行您的程序,他们会看到:

/usr/bin/env: node: No such file or directory

Googling that将在第一个结果中为他们提供修复,并在第一页上多次修复。

如果您真的非常想确保用户可以在 nodejs 的系统上运行您的软件。可用,但 node不是(或者 node 实际上是 Amateur Packet Radio Node program ),那么您可以使用取自 Unix & Linux Stack Exchange 的“两行 shebang” :

#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"

console.log('Hello world!');

但在 Node 世界中几乎没有其他人的情况下,你真的需要这样做吗?

关于node.js - 适用于 Node.js 脚本的 hashbang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20638520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com