我试图在Ubuntu16.04中安装一个软件包。我收到以下错误消息:
npm install
...
> padlock@2.0.0-beta.1 bower-install /home/kent/Documents/padlock
> pushd app && bower install && popd app
sh: 1: pushd: not found我的研究
根据/bin/sh: pushd:未找到的说法,我的问题很明显是npm正在尝试使用sh而不是bash来执行pushd。
但是,我的默认shell已经是bash了。
$ env | grep SHELL
SHELL=/bin/bash
$ echo $SHELL
/bin/bash
$ echo $0
bash我不确定我需要改变什么。我还尝试过在执行pushd应用程序之前添加SHELL=/bin/bash,但我在这方面也没有任何进展。
发布于 2017-08-11 08:51:37
npm-使用sh运行的脚本
脚本是通过将该行作为脚本参数传递给新的sh来运行的。
https://docs.npmjs.com/misc/scripts#exiting
如果您想要在脚本中使用bash,请生成脚本。
bash -c 'pushd app && bower install && popd'
更新:从2017年11月开始,您现在可以在.npmrc中设置script-shell以使用自定义的shell
发布于 2018-03-21 19:00:41
通过在我的项目目录中创建这个文件,我能够解决类似的情况:
$ cat .npmrc
script-shell=/bin/bashFWIW,我偶然发现的问题是依赖于package.json文件的package.json文件中特定于bash的“花括号扩展”命令。这个格式错误的命令可以在MacOS中工作,但不适用于Linux。
https://stackoverflow.com/questions/45630223
复制相似问题