我有以下./run
文件+ x模式。
#!/usr/bin/env babel-node --
require("generator/run.js")
用作任务管理器的入口点(对于静态站点生成器)。
我称之为$ ./run someTask --someFlag
,它在我的本地计算机(OS X)上工作得很好process.argv
,如:
[ 'node',
'/Users/username/Projects/projectname/run',
'someTask',
'--someFlag' ]
Hovewer,当我在使用CentOS的机器上尝试相同的$ ./run someTask --someFlag
命令时,我收到错误:
/usr/bin/env: babel-node --: No such file or directory
虽然肯定安装了babel-node并且手动呼叫:
$ /usr/bin/env babel-node --
也可以。我知道问题是由双重破折号引起的 - 删除它们删除了错误。但是我需要那些破折号来分隔我自己的任务标志,否则它们会被babel-node
消耗掉,我搜索了"双击shebang"在这里和谷歌,没有得到答案。
当然,我可以将呼叫方法更改为babel-node ./run ...
,但我希望保留$ ./run someTask --someFlag
语法,如果可能的话,并了解为什么会发生这种情况。 Unix和Linux之间的shebang处理是否存在主要差异,或者两台机器上的Node.js之间存在差异?!
P.S。
两台机器都有相同版本的Node.js,babel-node和project文件。