sudo: npm:找不到命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sudo: npm:找不到命令相关的知识,希望对你有一定的参考价值。

参考技术A 我的菜鸟小笔记(在deepin中)
在直接使用 npm 时可以正常使用

但是在 使用 sudo 时却找不到命令

原因:
输入 which npm 查看 npm 命令所在的位置(这个只是我个人安装的目录)

这个目录只是系统中普通用户的目录,而 sudo 执行的命令是在 /usr/bin 目录下,
所以,解决方法如下:
将用户目录下的 npm 文件创建一个链接到 sudo 的执行目录下,让 sudo 也能找得到这个文件,就可以愉快的执行命令了
网上大神都这么说的,但是我这么操作死活不成功
https://blog.csdn.net/lmmilove/article/details/30066489

最后我就换了个方法,先进入到了 /usr/bin 的目录下,然后在执行上面的命令。

然后查看一下:

命令路径成功改变!
现在再去执行 sudo npm install -g xxx 发现没有问题了
虽然不知道这波操作科不科学,但是最后成功了!
我的菜鸟小笔记

sudo xx 找不到命令

参考技术A 使用 sudo 执行时, 环境变量默认会重置, PATH 不再是执行 sudo 之前的了. 导致很多命令在一般用户下找得到, 换sudo执行就找不到了

在 /usr/bin 下面给需要的命令建立软连接. 因为 /usr/bin 包含在sudo的secure_path路径中. 如
sudo ln -s /opt/nodejs/node/bin/node /usr/bin/node

修改 /etc/sudoers 里的 secure_path 变量, 把需要的目录路径加入进去.
修改 /etc/sudoers 文件使用 visudo 命令:
sudo visudo

然后使用 sudo -E 执行命令. -E会保持当前的环境变量,但仍然需要执行的命令位于 secure_path 路径之中. 如"
sudo -E pm2 status

sudo env PATH=$PATH <需要使用sudo执行的命令>

嫌每次输入麻烦的,配置sudo命令别名
vim .bash_aliases # 或者 vim .bashrc
alias sudo='sudo env PATH=$PATH'

以上是关于sudo: npm:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章

Ec2 sudo 运行 npm或node时,出现找不到命令

sudo npm 找不到命令

sudo xx 找不到命令

在 sudo 上找不到命令

Ubuntu执行命令时,不sudo提示权限不足,sudo提示找不到该命令

sudo:端口:找不到命令