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

发布于 2024-12-15 05:17:57 字数 359 浏览 2 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

悸初 2024-12-22 05:17:57

在 Linux 上,解释器名称后面的整个字符串作为单个参数传递给解释器,并且该字符串可以包含空格。 [1] 因此,命令行参数是未拆分,并且 env 命令正在尝试执行 node --harmony_proxies 文件,但显然找不到该文件。请参阅此处此处了解更多详细信息。

这是为您提供的替代解决方案:

#!/bin/sh
exec 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 execute node --harmony_proxies file, which obviously could not be found. See here and here for more details.

Here is an alternative solution for you:

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

Hope it helps. Good luck!

水溶 2024-12-22 05:17:57

如果node命令安装在固定位置,则可以直接使用它:

#!/usr/bin/node --harmony_proxies

但是如果您不能假设node安装在特定位置,请使用一个其他答案。

If the node command is installed in a fixed location, you can use it directly:

#!/usr/bin/node --harmony_proxies

But if you can't assume that node is installed in a particular location, go with one of the other answers.

掩饰不了的爱 2024-12-22 05:17:57

如果您不想修改源代码,包装器别名可能是正确的解决方案。

我的 .bashrc 中的示例:

alias how2='/usr/bin/env node --no-deprecation "$(which how2)"'

If you don't want to modify the source, a wrapper alias might be the right solution.

Example from my .bashrc:

alias how2='/usr/bin/env node --no-deprecation "$(which how2)"'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文