Macos 如何为root用户设置环境变量

Macos 如何为root用户设置环境变量,macos,environment,sudo,pythonpath,Macos,Environment,Sudo,Pythonpath,我是Mac用户 我想为root设置PYTHONPATH env。所以 $ sudo su - # vi ~/.profile 并添加到文件“export PYTHONPATH=/mypythonlib” 然后 我能看到这条线 PYTHONPATH=/Users/simpnet2/projects/meiji/src/hershey 但是 当我使用sudo命令时,找不到 $ sudo env 。。没有蟒蛇 我的程序必须使用sudo命令运行,并且需要PYTHONPATH如果使用sh try/e

我是Mac用户

我想为root设置PYTHONPATH env。所以

$ sudo su -
# vi ~/.profile
并添加到文件“export PYTHONPATH=/mypythonlib”

然后

我能看到这条线

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

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

$ sudo env
。。没有蟒蛇


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

如果使用sh try
/etc/profile
,您应该尝试
sudo-i
,它将模拟以
root
身份登录,并获取
~root/.profile

,bash try
/etc/bashrc
,如果您使用zsh try
/etc/zshenv
从10.8.5开始,将我的环境语句放在根用户(/var/root)主页的.profile路径中。退出bash并返回root用户提示符并使用“su-”后,我可以看到我的新路径等。使用“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 MacBook Pro:~root#cat/var/root/.profile 导出MANPATH=/opt/local/share/man:$MANPATH 导出路径=/opt/local/bin:/opt/local/sbin:$PATH MacBook Pro:~root#哪个端口 /opt/local/bin/port
在编辑sudoers文件时,可以使PYTHONPATH对sudo可见。请注意,您应该只通过visudo执行此操作。

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

在其他Linux系统中,“sudo”不使用本地环境变量也是正确的。但是您可以将临时环境变量与“sudo”命令一起声明

例如,在您的示例中,可以在命令“sudo env”中添加“PYTHONPATH=/mypythonlib”,最后一个命令是:

sudo PYTHONPATH=/mypythonlib env

您也可以阅读本文:。您可以看到“sudo”如何保留或忽略用户定义的环境变量

请阅读。有一件事要补充。。。如果启用了ubuntu
,请尝试最佳答案。事实上,唯一对我有效的方法。
sudo PYTHONPATH=/mypythonlib env