我有一个shell脚本来运行带有一些参数的节点,如下所示:
#!/usr/bin/env node --harmony_proxies
...
这在OS X下工作正常,但在Ubuntu中它出错:
/usr/bin/env: node --harmony_proxies: No such file or directory
节点肯定是安装在PATH上的,因为如果我删除--harmony_proxies
标志它就能正常工作。在Ubuntu中使用env
时是否有一些不同的传递参数的方法?
答案 0 :(得分:5)
在Linux上,解释器名称后面的整个字符串作为单个参数传递给解释器,此字符串可以包含空格。 [1]因此,命令行参数不会被拆分,env
命令正在尝试执行node --harmony_proxies
文件,这显然无法找到。有关详细信息,请参阅here和here。
以下是您的替代解决方案:
#!/bin/sh
exec node --harmony_proxies "$@"
希望它有所帮助。祝你好运!
答案 1 :(得分:0)
如果node
命令安装在固定位置,您可以直接使用它:
#!/usr/bin/node --harmony_proxies
但是,如果您不能假设node
已安装在特定位置,请使用其中一个答案。
答案 2 :(得分:0)
如果您不想修改来源,a wrapper alias可能是正确的解决方案。
我的.bashrc示例:
alias how2='/usr/bin/env node --no-deprecation "$(which how2)"'