2011-03-09 34 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'如何保留或忽略用戶定義的環境變量。