我有以下./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' ]
然而,当我在装有 CentOS 的机器上尝试相同的$ ./run someTask --someFlag
命令时,我收到了一个错误:
/usr/bin/env: babel-node --: No such file or directory
虽然 babel-node 肯定已安装并手动调用:
$ /usr/bin/env babel-node --
工作正常。我知道问题是由双破折号引起的 - 删除它们会删除错误。但是我需要这些破折号来分隔我自己的任务标志,否则它们会被babel-node
我在这里和谷歌上搜索“双破折号”所消耗,没有得到任何答案。
当然,我可以将调用方法更改为,但如果可能的话,babel-node ./run ...
我想保留语法并了解为什么会发生这种情况。$ ./run someTask --someFlag
Unix和Linux之间的shebang处理是否存在主要差异,或者两台机器上的Node.js之间存在差异?!
附言
两台机器都有相同版本的 Node.js、babel-node 和项目文件。