Node.js 运行npm脚本时使用哪个shell npm?

Node.js 运行npm脚本时使用哪个shell npm?,node.js,bash,shell,npm,fish,Node.js,Bash,Shell,Npm,Fish,我站在窗户上,用鱼壳穿过ConEmu。默认情况下,Fish不识别“&&”运算符,但具有以下特性: "scripts": { "test": "echo 'a' && echo 'b'" } 运行“npm运行测试”正在运行。 所以我认为它必须使用默认的“cmd”,而这正是npmconfigls-l | grepshell所说的。。。。 当我将“测试”脚本更改为: "scripts": { "test": "echo 'a' && ls" } 当“cmd”

我站在窗户上,用鱼壳穿过ConEmu。默认情况下,Fish不识别“&&”运算符,但具有以下特性:

"scripts": {
  "test": "echo 'a' && echo 'b'"
}
运行“npm运行测试”正在运行。 所以我认为它必须使用默认的“cmd”,而这正是
npmconfigls-l | grepshell
所说的。。。。 当我将“测试”脚本更改为:

"scripts": {
  "test": "echo 'a' && ls"
}
当“cmd”中显然不支持
ls
时,这种方法也能起作用


这到底是怎么回事 我不知道在您的案例中使用了什么shell,也不知道检查npm使用哪个shell的首选方法是什么,但我有一些一般性的提示,可能会有所帮助

你可以试试

{ 
  "scripts": {
    "test": "echo $0" 
  }
}
这会产生如下结果:

$ npm run test

> @ test /home/matmat/test
> echo $0

sh
(适用于linux上的bash)

在Windows Node.js命令提示符下

你也可以试试

  "test": "which ls"

获取更多信息。

查找行
npm run
将命令发送到
sh
shell,该shell通常指向默认的Bourne兼容shell。我没有使用您的模拟器的经验,但我敢打赌它在您的环境中使用的是
bash
(因为Fish与伯恩不兼容)

  "test": "which ls"