Инструкции в Как мне установить переменные ПУТИ для всех пользователей на сервере? поработайте над тем, чтобы задать ПУТЬ для всех "обычных" пользователей. Однако, если я это сделаю 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