Если я установлю переменную в /etc/environment
, кажется, что она применима только к администраторам, когда в sudo su
.
Как я могу заставить переменные применяться ко всем? Особенно когда они в терминале? Настройки в /etc/enviroment
не применимы к bash?
Обновление /etc/environment
будет работать только на следующем сеансе, оно не будет автоматически перезагружено.
Это означает, что вы не можете изменить его для сеансов, которые уже начались для других пользователей.
Если вы хотите «перезагрузить» все, что находится в /etc/environment
, вам нужна следующая команда:
source /etc/environment
Но опять же, это будет работать только для вашего текущего сеанса, другие пользователи не будут затронуты, пока они не начнут новый сеанс или не выполнят вышеуказанную команду в своем собственном сеансе.
Добавление переменной в /etc/environment
сработало для меня.
Однако Мне пришлось перезагрузиться после изменения /etc/environment
, чтобы изменения вступили в силу. Простого закрытия и повторного открытия окна терминала было недостаточно.
создайте собственный сценарий оболочки в разделе
/etc/profile.d/
, добавьте глобальные переменные среды внутри созданного сценария, перезагрузите компьютер, и он будет доступен каждому.
Как кто-то еще упомянул, вам нужно перезагрузить компьютер или выйти из системы / войти в систему, чтобы изменения /etc/profile
, /etc/profile.d/*.sh
и /etc/environment
были подобраны.
Это потому, что, хотя эти файлы определяют глобальную среду ... они запускаются только один раз при входе в систему, и поэтому существующие входы / сеансы не будут отражать изменения этих файлов. Перезагрузка «сбрасывает» логин каждого, заставляя его выбрать новую среду.
В вашем собственном сеансе входа в систему вы можете source /etc/profile
забрать изменения без перезагрузки или выхода из системы / входа в систему ... но это повлияет только на ваш собственный сеанс и процессы, выполняющиеся в вашем сеансе.
Также обратите внимание , что в /etc/environment
нет интерполяции переменных (это не скрипт), поэтому вы не можете делать там что-то вроде PATH="$PATH:/my/custom/path"
.
Обратите внимание, также, что /etc/profile
и /etc/profile.d/*.sh
запускаются только для сеансов входа в систему, и поэтому настроенная среда не будет доступна системным учетным записям, не входящим в систему (т. Е. Если вы пытаетесь установить переменная окружения для процесса-демона, который запускается вне вашей оболочки входа в систему).
Распространенной проблемой является установка новой программы, и для ее правильной работы необходимо указать некоторую среду. Глобальная среда - это один из ответов, но часто требуется перезагрузка, которая не идеальна для серверов и случаев автоматического обеспечения / настройки. Вы должны спросить себя, действительно ли это переменная, которая нужна всем пользователям и программам в системе, или это действительно просто то, что вам нужно сделать доступным для конкретного пользователя или программы.
посмотрите на включение среды в профиле или bashrc в домашнюю директорию пользователя (например, ~/.profile
~/.bashrc
) в зависимости от того, хотите ли вы это для интерактивных, входных оболочек или обоих.
Во-первых, нужно просто указать среду при запуске команды:
VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE" /path/to/program --opt1 --op2
Если вы используете systemd, вы также можете указать среду в файле модуля / сервиса в [Service]
. ] с Environment=VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE
Здесь также есть очень подробный ответ, который я предлагаю вам прочитать: https: // askubuntu. ком / а / 247769/824160