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

40

Чтобы создать постоянные переменные среды, я добавляю файл скрипта в каталог /etc/profile.d, например:

# мой сценарий
экспорт MY_VAR = var_value

Это работает правильно для текущего пользователя:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value

Теперь мне нужны те же переменные окружения для пользователя root, но скрипт /etc/profile.d не работает для root:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value
alex @ alex-64: ~ $ sudo su
root @ alex-64: / home / alex # echo $ MY_VAR

корень @ Alex-64: / дома / Alex # 

Как я могу установить те же переменные для корня?

Алекс Ф
источник
2
Этот вопрос о том, как сохранить конкретную переменную из среды вызывающего при запуске sudo, очень связан. (Но это не дубликат, потому что этот вопрос о том, как настроить собственную среду root .)
Элия ​​Каган,

Ответы:

44

sudo обычно не сохраняет локальные переменные окружения. Для этого вы должны использовать его с -Eключом, т.е. sudo -E suсохраните $ MYVAR для root.

В качестве альтернативы, для создания постоянных переменных, которые являются действительно общесистемными, вы должны установить их в /etc/environment.

иш
источник
14
Не работает, переменные / etc / environemnt не установлены для sudo
Фредерик Йесид Пенья Санчес
3
@ FredericYesidPeñaSánchez это сделал для меня на CentOS. Вы не FOO=bar
пишете
10

Как и процесс, в котором вы определяете свою собственную переменную среды, например, редактируя «~ / .bashrc», вы можете определить переменную среды root, отредактировав «/root/.bashrc».

ppppplv
источник
8

Defaults env_resetв /etc/sudoersсбрасывает корень, PATHопределенный /etc/environment.

Вы можете изменить его, Defaults !env_resetчтобы отключить сброс или добавить:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
diyism
источник
Если я хочу использовать второе решение (значит добавить путь к secure_path), какой ключ ?! путь это просто значение. Я хочу добавить ANDROID_NDK в переменные окружения для root. Так что пока я просто использую первый (! Env_reset). Спасибо.
Dr.jacky