Переменные среды при запуске с 'sudo'

В качестве примера к моему вопросу мой файл ~/.bashrc содержит следующие строки:

export LD_LIBRARY_PATH=/opt/intel/mkl/lib/ia32:$LD_LIBRARY_PATH
export LD_PRELOAD=/opt/intel/mkl/lib/ia32/libmkl_core.so

, чтобы Numpy (Python) мог найти библиотеки, которые ему нужно запустить, поскольку он создан с помощью компиляторов MKL и Intel. Этот рабочий процесс не самый лучший, но это еще одна история.

Мой вопрос как я могу передать произвольные переменные (например, в ~/.bashrc), когда я запускаю программу с 'sudo' (но не root)?

В настоящее время, если я запускаю:

sudo python -c "import numpy"

Я получаю сообщение об ошибке:

ImportError: libimf.so: cannot open shared object file: No such file or directory*

Некоторые предложения как sudo -i или sudo -E ничего не меняет.


Edit:

Я не могу ответить на мой вопрос (недостаточно очков: D), но я прокомментирую здесь, в надежде, что есть другие новички Linux, которые задаются вопросом о sudo.

[Только временно!] Это работает для меня (~/.bashrc):

alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
39 голосов | спросил zetah 20 AM00000050000002431 2011, 05:12:24

3 ответа


19

Параметр -E, который вы указываете, работает очень хорошо:

[email protected]:~$ export DUMMY=dummy
[email protected]:~$ sudo -E sh -c 'echo $DUMMY'
dummy
[email protected]:~$ sudo -E env | grep DUMMY
DUMMY=dummy
ответил enzotib 20 AM00000090000005531 2011, 09:37:55
9

Вы можете использовать параметр -E sudo для сохранения текущей среды (если у вас есть права на это)

$ man sudo
 -E, --preserve-env
             Indicates to the security policy that the user wishes to preserve
             their existing environment variables.  The security policy may
             return an error if the user does not have permission to preserve
             the environment.
ответил Eugen Konkov 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 14 Sep 2015 12:09:24 +0300 2015, 12:09:24
0

Это работает для меня (~/.bashrc):

alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'

Источник: согласно Редактирование OP

ответил kenorb 24 ThuEurope/Moscow2015-12-24T21:28:08+03:00Europe/Moscow12bEurope/MoscowThu, 24 Dec 2015 21:28:08 +0300 2015, 21:28:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132