2011-03-09 315 views
5

我是Mac用户。如何为root用户设置环境变量

我想为root设置PYTHONPATH env。所以

$ sudo su - 
# vi ~/.profile 

,并添加到文件 '出口PYTHONPATH =/mypythonlib'

然后

# env 

我能看到这条线

PYTHONPATH=/Users/simpnet2/projects/meiji/src/hershey 

但..

当我使用sudo命令时,canno找不到那

$ sudo env 

..没有PYTHONPATH

我的程序必须用sudo命令运行,需要PYTHONPATH

+0

请阅读[如何格式化问题](http://stackoverflow.com/editing-help)。 – 2011-03-09 02:23:49

回答

6

如果您使用sh尝试/etc/profile,bash尝试/etc/bashrc,如果您使用zsh尝试/etc/zshenv

+4

有一点要加...如果在''ubuntu''上,bash试试''/ etc/bash.bashrc'' – Richard 2012-08-30 19:40:26

2

您应该尝试sudo -i,它将模拟登录为root和来源~root/.profile

1

从10.8.5开始,将我的环境语句放在根用户主目录(/ var/root)的.profile路径中。使用'su - '退出bash并返回到root用户提示符后,我可以看到我的新路径等,并且使用'env'命令我的MacPorts安装正确。

 
MacBook-Pro:~ root# cat /var/root/.profile 
export MANPATH=/opt/local/share/man:$MANPATH 
export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
MacBook-Pro:~ root# which port 
/opt/local/bin/port 
5

你可以使PYTHONPATH可见sudo编辑你的sudoers文件。注意你只能通过visudo as explained here来做到这一点。

+0

最好的答案。其实,唯一对我有用的。 – 2015-02-06 13:10:50

0

在以普通用户身份登录并调用“su-root”的情况下,我发现Mac OS 10.8.5的bash忽略了.profile和.bash_profile;我无法通过编辑这些文件来更改root的$ PATH。什么工作是编辑/ etc /路径。在退出根shell并以“su - root”再次进入后,新的路径出现了。

1

那么,在其他Linux系统中,'sudo'不使用本地环境变量也是正确的。但是你可以声明临时环境变量和'sudo'命令。

例如,在你的情况,你可以在命令“sudo的包膜”添加“PYTHONPATH =/mypythonlib”,和最后的命令是:

sudo PYTHONPATH=/mypythonlib env 

您还可以阅读这篇文章:Using sudo。您可以看到'sudo'如何保留或忽略用户定义的环境变量。