2017-02-27 23 views
2

我在最后加上export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH设置了/etc/bash.bashrc的环境变量LIBRARY_PATHpython:os.getenv与sudo无关?

当我尝试从蟒蛇获得ENV变量:

ipython 
import os 
print os.getenv('LIBRARY_PATH') 

一切运作良好,它打印/usr/local/cuda/lib64:

但是当我调用IPython的与sudo

sudo ipython 
import os 
pront os.getenv('LIBRARY_PATH') 

我什么也没得到。我想这是关于用户的环境变量,但是什么是ditails?我在/etc/bash.bashrc中设置了LIBRARY_PATH,它被认为是'系统宽度bashrc文件'。

那么我如何才能在python中使用sudo来获得正确的env变量?

回答

0

如果您在/root/.bash_profile中设置环境变量,那么在使用sudo时可能会获得所需的行为。

+0

@rici的答案解决了我的问题,谢谢。 –

1

如果您想要sudo通过环境变量(通常被认为是安全隐患),请使用sudo -E

请注意,它是bash它执行bashrc文件中的命令。 ipython不是bash,很明显,sudo不启动一个shell进程,更不用说是一个bash进程,只是为了运行你要求它运行的命令。因此,您的bashrc文件都不会由sudo命令或sudo子流程执行。当然,你可以告诉sudo运行bash进程:

sudo bash -c ipython 

然而,bash不一样,如果它检测到它是在须藤过程中运行执行的启动文件。

有关sudo如何清洁环境的更多信息,请键入man 5 sudoers并跳至Command environment部分。

+0

谢谢您的耐心回答,解决问题! –