Ubuntu双击运行含npm命令的bash脚本提示npm: command not found求助
问题原因
Ubuntu下不同的bash启动场景会加载不同的配置文件:
- 手动打开终端执行脚本时,启动的是交互式登录shell,会自动加载
~/.bashrc、~/.profile等用户个人配置文件,nvm安装时默认会把Node.js/npm路径写入这类配置中,所以能正常识别npm命令。 - 双击文件选择「在终端中运行」时,启动的是非登录非交互式shell,默认不会加载上述用户个人配置,因此PATH中缺失nvm对应的Node.js路径,就会报
npm: command not found的错误。
解决方案
提供三种常用的修复方式,按需选择即可:
方式1:直接在脚本内补全路径(最快捷,仅对当前脚本生效)
在startWebApp.bash的#!/bin/bash行下方,手动加入nvm的路径配置,修改后脚本如下:
#!/bin/bash # 新增一行,写入你实际的nvm Node版本路径 export PATH=/home/magonba/.nvm/versions/node/v14.17.6/bin:$PATH # 也可以选择加载nvm的初始化脚本替代上面的PATH配置 # source /home/magonba/.nvm/nvm.sh sudo service postgresql restart cd /home/my/project/folder/nodejsapp npm start & cd /home/my/project/folder/vuejsapp npm run serve &
方式2:调整nvm配置加载范围(对当前用户所有场景生效)
nvm安装时默认会把初始化代码写入~/.bashrc,你可以把这部分初始化代码(通常是安装nvm时自动追加在~/.bashrc末尾的3-4行代码,包含NVM_DIR定义和source加载逻辑)移动到~/.profile或者~/.xprofile文件中,这两个文件会在图形界面会话启动时就加载,后续不管是终端运行还是双击运行脚本,都能读到nvm的PATH配置。
修改完成后需要注销当前用户重新登录,配置才会生效。
方式3:配置系统级PATH(所有用户生效,不推荐个人使用)
如果需要让所有用户都能访问nvm的Node环境,可以把nvm路径写入/etc/profile文件末尾,修改后重启系统生效。
内容的提问来源于stack exchange,提问作者Manuel Gonçalves Barroso
相关产品推荐
相关产品推荐

