如何执行sudo命令时保留当前用户env变量

在linux环境中我们经常使用sudo命令执行root权限,但默认情况下sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前设置的变量都会失效。可以通过如下设置来取消这种设置:
1、编辑sudoers文件
vim /etc/sudoers
注释掉:

#Defaults       env_reset
#Defaults       mail_badpass
#Defaults       secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

添加

Defaults !env_reset

添加普通用户分配权限

zhangshan ALL=(ALL:ALL) ALL

这里写图片描述
2、添加特殊变量
从 1.6.9 版开始,在 sudo 执行给定的脚本或命令之前,会缩减一些系统环境变量(比如 LIBPATH)【其实就是一些包含path关键字的变量为了安全被缩减了】的设置。这会给在 sudo 下运行的现有命令造成问题。但是,在大多数情况下有办法解决。方法有很多,下面提供一种方法:
在普通用户的.profile或.bashrc中添加如下代码,下面添加PYTHONPATH和LD_LIBRARY_PATH为例:

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/
export PYTHONPATH=/export/songhongwei/code/py-faster-rcnn/caffe-fast-rcnn/python
alias sudo='sudo env PYTHONPATH=$PYTHONPATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH'

猜你喜欢

转载自blog.csdn.net/otengyue/article/details/79217563