如何在 sudo 命令中保留特定环境变量
条评论文章目录
今天在Ubuntu中执行npm install -g hexo-cli
时,死活执行不成功。明明设置了当前用户的代理,哪怕在root和普通用户的环境变量中都设了代理,都不行,
我当前用户的**~/.bashrc**是设置好了代理的:
1 | # set proxy |
解决方法是通过编辑 /etc/sudoers
文件来确保特定的环境变量在使用 sudo
时被保留。
以下是完整的操作步骤示例:
为了安全起见,应该使用
visudo
命令来编辑/etc/sudoers
文件。这是因为visudo
会在保存文件之前检查语法,防止语法错误导致权限问题。在打开的文件中添加或修改以下行:
1 | Defaults env_keep += "http_proxy https_proxy no_proxy" |
保存并退出;
保存文件并退出编辑器。默认情况下,
visudo
使用nano
作为编辑器,你可以按Ctrl+X
然后按Y
并回车保存文件并退出。
验证配置
使用 sudo
运行一个命令并检查环境变量是否被保留
1 | sudo -E env | grep -E 'http_proxy|https_proxy|no_proxy' |
你应该看到输出包含你设置的 http_proxy
、https_proxy
和 no_proxy
的值。
再次执行sudo npm install --unsafe-perm --verbose -g hexo-cli
顺利执行,问题解决!
分享