4

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

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

这在 OS X 下可以正常工作,但在 Ubuntu 中会出现以下错误:

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

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

4

3 回答 3

7

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

这是您的替代解决方案:

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

希望能帮助到你。祝你好运!

于 2011-11-13T01:43:51.780 回答
0

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

#!/usr/bin/node --harmony_proxies

但是,如果您不能假设它node安装在特定位置,请选择其他答案之一。

于 2011-11-13T01:46:47.500 回答
0

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

我的 .bashrc 中的示例:

alias how2='/usr/bin/env node --no-deprecation "$(which how2)"'
于 2016-12-13T23:21:44.007 回答