1

我有以下./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 --someFlagUnix和Linux之间的shebang处理是否存在主要差异,或者两台机器上的Node.js之间存在差异?!

附言

两台机器都有相同版本的 Node.js、babel-node 和项目文件。

4

0 回答 0