10

我是 Mac 用户。

我想为 root 设置 PYTHONPATH 环境。所以

$ sudo su -
# vi ~/.profile

并添加到文件'export PYTHONPATH=/mypythonlib'

然后

# env

我可以看到这条线

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

但..

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

$ sudo env

.. 没有 PYTHONPATH

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

4

6 回答 6

9

如果你使用 sh try /etc/profile, bash try /etc/bashrc,如果你使用 zsh try /etc/zshenv

于 2011-03-09T02:28:08.900 回答
6

您可以使 PYTHONPATH 对 sudo 可见,以编辑您的 sudoers 文件。请注意,您只能按照此处的说明通过 visudo 执行此操作。

于 2014-12-22T16:28:01.530 回答
5

您应该尝试sudo -i将模拟登录root并获取~root/.profile.

于 2011-03-09T02:28:01.013 回答
1

从 10.8.5 开始,将我的环境语句放在 root 用户 (/var/root) 家中的 .profile 路径中有效。在退出 bash 并使用“su -”返回 root 用户提示符后,我可以使用“env”命令看到我的新路径等,并且我的 MacPorts 安装工作正常。

MacBook-Pro:~ root# cat /var/root/.profile
导出 MANPATH=/opt/local/share/man:$MANPATH
导出 PATH=/opt/local/bin:/opt/local/sbin:$PATH
MacBook-Pro:~ root# 哪个端口
/opt/local/bin/端口
于 2013-12-11T17:34:08.640 回答
1

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

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

sudo PYTHONPATH=/mypythonlib env

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

于 2015-05-21T14:48:06.087 回答
0

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

于 2015-04-17T21:13:24.133 回答