GNU env shebang line中的选项命令抛出错误

时间:2017-08-08 06:58:31

标签: shell gnu bsd shebang

事实证明,在我的Mac上一直很好地哼唱的tool for evaluating json并不像我想的那样是跨平台。一旦我在Ubuntu上安装它,我就收到了这个错误:

npm install -g pick_json
echo '{ "foo" : {  "bar" : 2 } }' | pick_json -e foo.bar
/usr/bin/env: ‘node --harmony’: No such file or directory

事实证明,GNU env认为带有参数in the shebang line的命令应该被评估为一个字符串。这不会发生在BSD上。在命令行上手动评估相同的命令似乎没问题 - 只有在文件中写入错误时才会发生错误。

$ /usr/bin/env node --harmony
>

我尝试了各种各样但无济于事,所以问题仍然存在:

如何将选项传递给将使用GNU env命令的shebang行中的命令?

1 个答案:

答案 0 :(得分:1)

  

#!语法通常被称为Berkeley#!黑客攻击。那是个   没有它完美的改进。但仍然是   被认为是黑客,因为它有很多局限性。一个是那个   允许一个参数。某些操作系统有限制   允许的行数超过32个字符。