Обновить:
Установка глобальных переменных среды все еще должна выполняться /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 по умолчанию настроен на выполнение этого файла всякий раз, когда пользователь входит в оболочку или среду рабочего стола.
visudo
(необходимы права root) для редактирования настроек безопасного пути. это не рекомендуемая практика. Это просто здесь для образования.sudo -i
будет имитировать вход в систему (аналогичноsudo su -
) и, таким образом, даст вам эти переменные среды.источник