Инструкции в Как настроить переменные PATH для всех пользователей на сервере? работают для установки PATH для всех «обычных» пользователей. Однако, если я сделаю sudo -s
, а затем printenv PATH
, обновленный путь не будет показан. Я посмотрел, например, Настройка пути TeX Live для root , но, похоже, это не имеет смысла для меня, возможно, поскольку я из Windows. Есть ли способ установить действительно общесистемный путь, чтобы записи наследовались абсолютно всеми процессами, работающими в системе?
Обновление:
Установка глобальных переменных среды по-прежнему должна выполняться в / etc / environment
, но, как вы отметили, с помощью sudo -s
приводит к тому, что эти переменные «исчезают».
Причина в том, что sudo
имеет политику сброса среды и установки безопасного пути ]. Он включен по умолчанию:
/etc/sudoers:
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Таким образом, все, что установлено в / etc / environment
для пути, заменяется sudo
.
Страница руководства для sudoers
гласит:
env_reset If set, sudo will reset the environment to only contain
the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
variables. Any variables in the caller's environment
that match the env_keep and env_check lists are then
added. The default contents of the env_keep and
env_check lists are displayed when sudo is run by root
with the -V option. If the secure_path option is set,
its value will be used for the PATH environment
variable. This flag is on by default.
В качестве обходного пути вы можете использовать sudo su
, который предоставит оболочку с привилегиями root, но содержит правильный PATH.
Исходный ответ
Вы должны установить его в / etc / environment
.
Попробуйте sudo YOUR_TEXT_EDITOR / etc / environment
(сначала обязательно создайте резервную копию).
Для получения дополнительной информации: EnvironmentVariables
Общесистемные переменные среды
Параметры переменных среды, влияющие на систему в целом (а не только конкретного пользователя) не следует помещать ни в одну из множество скриптов системного уровня, которые выполняются, когда система или сеансы рабочего стола загружаются, но в
/ etc / environment
- этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному в каждой строке. В частности, это В файле хранятся общесистемные настройки локали и пути.Не рекомендуется:
/ etc / profile
- этот файл запускается всякий раз, когда вводится оболочка входа в bash (например, при входе в систему с консоли или через ssh), поскольку а также DisplayManager при загрузке сеанса рабочего стола. Это вероятно, файл, на который вы попадете, когда спросите ветерана UNIX системные администраторы о переменных окружения. Однако в Ubuntu этот файл делает немного больше, чем вызывает файл /etc/bash.bashrc.
/etc/bash.bashrc
- это общесистемная версия файла ~ / .bashrc. Ubuntu по умолчанию настроен для выполнения этого файла всякий раз, когда пользователь входит в оболочку или среду рабочего стола.
sudo -i
будет имитировать вход в систему (аналогично sudo su -
) и, таким образом, предоставить вам эти переменные среды.