解决 sudo 执行命令时找不到命令问题 问题 不知道大家有没有遇到一个问题,就是加sudo后命令no found,即使我们已经将export path加到了 或者 例如 可以, 不可以 可以, 不可以 可以, 不可以 问题原因 Linux 系统中在使用 sudo 执行命令时是为当前用户赋予临时的 root 权限,考虑到安全性等相关问题,sudo 执行命令时会重置 PATH,此时 PATH 中是不包含用户配置的很多命令的路径的。所以会发现 sudo 执行命令时可能存在找不到的情况。 比如我们使用 Node.js 的版本管理工具如:nvm 安装的 Node.js 存放于 ~/.nvm/version/node/vx.x.x/bin 中,并且 nvm 会在 PATH 中加入该路径,正常是可以使用 node 命令,但是 sudo node 时由于 PATH 被重置, node 命令是找不到的。我们一般情况下不会用 sudo 去运行 node 命令,但是很多时候我们 npm install -g 安装的命令,如果需要操作系统某些文件或功能,是需要 sudo 执行的。 比如我们在用arkade安装minikube时,提示我们有两种方式将其添加进命令,一种是通过添加到path,另一种是移动到/usr/local/bin,其中第一种就会受sudo的影响 解决方案 软链接方案 在使用 sudo 执行命令时,被重置的 PATH 中是包含 /usr/local/bin 的,所以可以将需要的命令通过软链接的方式 放到 /usr/local/bin 中,然后 sudo 运行命令就可以正常执行了。 或者使用mv也行 修改 sudo 时重置 PATH 的默认值 通过软链接的方式对于少部分命令是可行的,还是 npm install -g 的这个场景,如果安装了很多需要 sudo 权限执行的命令,每个都通过软链接的方式比较繁琐,那么我们可以通过修改 sudo 时重置 PATH 的默认值,将 ~/.nvm/version/node/vx.x.x/bin 这个路径加入到 PATH 中。 使用 sudo vim /etc/sudoers 打开文件,然后找到 secure_path 这一行,在其中加入 ~/.nvm/version/node/vx.x.x/bin,然后通过 :wq! 保存即可,这里使用 vim 强制保存是因为 /etc/sudoers 文件是只读权限。 修改 sudo 时重置 PATH 的默认值方式需要多加注意安全问题,保证加入到 PATH 的路径中包含的命令是可以被信任的,如果不能够完全信任的情况下,还是建议使用软链接的方式针对性处理需要用到的命令。 当然把 export PATH=(PATH:)HOME/.arkade/bin/ 添加到profile中还是需要的,这里只是列出这个path可信任,但是前提是要先加到PATH中去 转载自:解决 sudo 执行命令时找不到命令问题
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/69077.html