为什么在 env 调用中将参数传递给命令不起作用?
我有一个 shell 脚本来运行带有一些参数的节点,如下所示:
#!/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
时是否有一些不同的传递参数的方式?
I have a shell script to run node with some arguments like so:
#!/usr/bin/env node --harmony_proxies
...
This works fine under OS X but in Ubuntu it errors with:
/usr/bin/env: node --harmony_proxies: No such file or directory
Node is definitely installed and on the PATH since if I remove the --harmony_proxies
flag it works fine. Is there some different way of passing arguments when using env
in Ubuntu?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Linux 上,解释器名称后面的整个字符串作为单个参数传递给解释器,并且该字符串可以包含空格。 [1] 因此,命令行参数是未拆分,并且
env
命令正在尝试执行node --harmony_proxies
文件,但显然找不到该文件。请参阅此处和此处了解更多详细信息。这是为您提供的替代解决方案:
希望有帮助。祝你好运!
On Linux, the entire string following the interpreter name is passed as a single argument to the interpreter, and this string can include white space. [1] Thus, command line arguments are not split, and
env
command is trying to executenode --harmony_proxies
file, which obviously could not be found. See here and here for more details.Here is an alternative solution for you:
Hope it helps. Good luck!
如果
node
命令安装在固定位置,则可以直接使用它:但是如果您不能假设
node
安装在特定位置,请使用一个其他答案。If the
node
command is installed in a fixed location, you can use it directly:But if you can't assume that
node
is installed in a particular location, go with one of the other answers.如果您不想修改源代码,包装器别名可能是正确的解决方案。
我的 .bashrc 中的示例:
If you don't want to modify the source, a wrapper alias might be the right solution.
Example from my .bashrc: