как установить переменную среды для пользователя root

Я пользователь Mac.

Я хочу установить PYTHONPATH env для root. так что

$ sudo su -
# vi ~/.profile

и добавьте в файл 'export PYTHONPATH= / mypythonlib'

затем

# env

Я вижу эту строку

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

но..

когда я использую команду sudo, не могу найти что

$ sudo env

.. нет PYTHONPATH

моя программа должна работать с командой sudo и нуждается PYTHONPATH.

6 ответов


Если вы используете sh try /etc/profile, bash try /etc/bashrc и если вы используете zsh try /etc/zshenv.


вы можете сделать PYTHONPATH видимым для sudo редактирования файла sudoers. Обратите внимание, что вы должны делать это только через visudo Как пояснил здесь.


вы должны попробовать sudo -i который будет имитировать вход в систему как root и источник ~root/.profile.


начиная с 10.8.5, помещая мои операторы среды в.путь профиля в доме пользователя root (/var/root) работал. после выхода из bash и возвращения в приглашение пользователя root с "su -" я мог видеть свой новый путь и т. д. с командой "env"и мой MacPorts installationw orking правильно.

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

Ну, в другой системе Linux также правильно, что "sudo" не использует локальную переменную среды. Но вы можете объявить временную переменную среды вместе с командой "sudo".

например, в вашем случае вы можете добавить "PYTHONPATH= / mypythonlib" в свою команду "sudo env", и последняя команда:

sudo PYTHONPATH=/mypythonlib env

вы также можете прочитать эту статью: использование sudo. Вы можете увидеть, как "sudo" сохраняет или игнорирует пользовательские переменные среды.


в случае входа в систему как обычный пользователь и вызова "su - root" я обнаружил, что bash Mac OS 10.8.5 игнорируется .профиль и. bash_profile; я не смог изменить $PATH root, отредактировав эти файлы. Что работало, так это редактирование/etc / paths. После выхода из корневой оболочки и входа снова с "su-root" новый путь присутствовал.