node.js - 为什么在 env 调用中将参数传递给命令不起作用?

标签 node.js shell ubuntu shebang

我有一个 shell 脚本来运行带有一些参数的 Node ,如下所示:

#!/usr/bin/env node --harmony_proxies
...

这在 OS X 下工作正常,但在 Ubuntu 下它会出错:

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

Node 肯定已安装并位于 PATH 上,因为如果我删除 --harmony_proxies 标志,它就可以正常工作。在 Ubuntu 中使用 env 时是否有一些不同的参数传递方式?

最佳答案

在 Linux 上,解释器名称后面的整个字符串作为单个参数传递给解释器,并且该字符串可以包含空格。 [1]因此,命令行参数没有拆分,env 命令试图执行 node --harmony_proxies 文件,显然找不到。参见 herehere了解更多详情。

这里有一个替代解决方案:

#!/bin/sh
exec node --harmony_proxies "$@"

希望对您有所帮助。祝你好运!

关于node.js - 为什么在 env 调用中将参数传递给命令不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108917/

相关文章:

shell - UNIX shell 脚本中的浮点运算

bash - Dartanalyzer-排除部分库

ubuntu - 将wireshark中的特定字段uniq

java - 无法使用 Java 运行 bash shell

ubuntu - 每 5 小时更新一次 crontab 以 tar 新的/更新的文件

node.js - 连接到 Node “most middleware (like bodyParser) and must be installed separately by nodejs"时出错

node.js - 无权访问此资源/API (GCP)

javascript - 如何让nodejs在继续之前等待mongodb连接(以阻塞方式调用async)

php - 使用 PHP 运行 Debian Bash 脚本

node.js - Socket.io 与 Express,express 应用程序如何知道监听哪个端口?