我在LIBRARY_PATH
中设置了环境变量/etc/bash.bashrc
,最后添加了export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH
。
当我尝试从python中获取env变量时:
ipython
import os
print os.getenv('LIBRARY_PATH')
一切正常,打印/usr/local/cuda/lib64:
。
但是当我用sudo
:
sudo ipython
import os
pront os.getenv('LIBRARY_PATH')
我一无所获。我想这是关于用户的env变量,但是什么是ditails?我在LIBRARY_PATH
中设置/etc/bash.bashrc
,这被称为'系统范围的bashrc文件'。
那么如何在python中使用sudo获取正确的env变量?
答案 0 :(得分:1)
如果您希望sudo
传递环境变量(通常被认为是安全隐患),请使用sudo -E
。
请注意,bash
执行bashrc文件中的命令。 ipython
显然不是bash
,sudo
不会启动shell进程,更不用说bash进程了,只是为了运行您请求它运行的命令。因此,sudo
命令或sudo
子进程中不会执行任何bashrc文件。当然,您可以告诉sudo
运行bash过程:
sudo bash -c ipython
但是,bash
如果检测到它正在sudo进程中运行,则不会执行启动文件。
有关sudo
如何清除环境的详细信息,请键入man 5 sudoers
并跳至Command environment
部分。
答案 1 :(得分:0)
如果在/root/.bash_profile中设置环境变量,则在使用sudo时可能会获得所需的行为。