Инструкции в Как мне установить переменные ПУТИ для всех пользователей на сервере? поработайте над тем, чтобы задать ПУТЬ для всех "обычных" пользователей. Однако, если я это сделаю sudo -s
и затем printenv PATH
обновленный путь не отображается. Я взглянул, например, на Настройка TeX Live path для root, но мне кажется, что это не имеет смысла, возможно, потому, что я из Windows. Есть ли какой-либо способ установить действительно общесистемный путь, чтобы записи наследовались абсолютно каждым процессом, запущенным в системе?
Обновление:
Установка глобальных переменных среды по-прежнему должна выполняться в /etc/environment
, но, как вы указали, используя sudo -s
имеет эффект, когда эти переменные "исчезают".
Причиной этого является sudo
проводит политику сброс настроек среды и установив безопасный путь. Он включен по умолчанию:
/etc/sudoers:Defaults env_resetDefaults 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
это обеспечит оболочку с правами суперпользователя, но содержащую правильный ПУТЬ.
Оригинальный Ответ
Вы должны установить его в /etc/environment
.
Попробуй sudo YOUR_TEXT_EDITOR /etc/environment
(сначала обязательно создайте резервную копию).
Для получения дополнительной информации: Переменные среды
Общесистемные переменные среды
Параметры переменных среды, которые влияют на систему в целом (а не только на конкретного пользователя), не должны помещаться ни в один из многих сценариев системного уровня, которые выполняются при загрузке системы или сеанса рабочего стола, а в
/etc/environment
- Этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. В частности, в этом файле хранятся общесистемные настройки локали и пути.Не рекомендуется:
/etc/profile
- Этот файл выполняется всякий раз, когда вводится оболочка входа в систему bash (например, при входе в систему с консоли или по ssh), а также DisplayManager при загрузке сеанса рабочего стола. Вероятно, это тот файл, на который вы будете ссылаться, когда будете спрашивать опытных системных администраторов UNIX о переменных среды. Однако в Ubuntu этот файл делает немногим больше, чем вызывает файл /etc/bash.bashrc.
/etc/bash.bashrc
- Это общесистемная версия файла ~/.bashrc. Ubuntu по умолчанию настроен на выполнение этого файла всякий раз, когда пользователь входит в оболочку или среду рабочего стола.
sudo -i
будет имитировать вход в систему (аналогично sudo su -
) и, таким образом, предоставить вам эти переменные среды.
В случае, если нам нужно добавить /usr/local/bin
в root's PATH
путем добавления той же записи в /etc/sudoers
файл, затем используйте команду sed следующим образом
sudo sed -i '/^Defaults secure_path/ s/$/\:\/usr\/local\/\bin/' /etc/sudoers