2011-11-13 30 views
3

我有一個shell腳本與一些參數,像這樣運行節點:爲什麼在env調用中傳遞參數給命令不起作用?

#!/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

只是可以肯定,確實'在/ usr/bin中/ env的節點正確--harmony_proxies在命令行腳本name'工作? –

回答

4

在Linux上,解釋器名稱後面的整個字符串作爲單個參數傳遞給解釋器,並且此字符串可以包含空格。 [1]因此,命令行參數不會被拆分,並且env命令正試圖執行node --harmony_proxies文件,這顯然無法找到。有關更多詳細信息,請參閱herehere

這裏是你的一個替代解決方案:

#!/bin/sh 
exec node --harmony_proxies "[email protected]" 

希望它能幫助。祝你好運!

0

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

#!/usr/bin/node --harmony_proxies 

但是,如果你不能假設node安裝在特定的位置,去與其他的一個答案。

+0

downvoter照顧解釋? –

0

如果您不想修改源,a wrapper alias可能是正確的解決方案。從我的.bashrc

例子:

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