Установка глобальной переменной среды для всех

Если я установлю переменную в /etc/environment, кажется, что она применима только к администраторам, когда в sudo su.

Как я могу заставить переменные применяться ко всем? Особенно когда они в терминале? Настройки в /etc/enviroment не применимы к bash?

16
задан 19 September 2017 в 18:19

4 ответа

Обновление /etc/environment будет работать только на следующем сеансе, оно не будет автоматически перезагружено.

Это означает, что вы не можете изменить его для сеансов, которые уже начались для других пользователей.

Если вы хотите «перезагрузить» все, что находится в /etc/environment, вам нужна следующая команда:

source /etc/environment

Но опять же, это будет работать только для вашего текущего сеанса, другие пользователи не будут затронуты, пока они не начнут новый сеанс или не выполнят вышеуказанную команду в своем собственном сеансе.

0
ответ дан 19 September 2017 в 18:19

Добавление переменной в /etc/environment сработало для меня.

Однако Мне пришлось перезагрузиться после изменения /etc/environment, чтобы изменения вступили в силу. Простого закрытия и повторного открытия окна терминала было недостаточно.

0
ответ дан 19 September 2017 в 18:19

создайте собственный сценарий оболочки в разделе

/etc/profile.d/

, добавьте глобальные переменные среды внутри созданного сценария, перезагрузите компьютер, и он будет доступен каждому.

0
ответ дан 19 September 2017 в 18:19

Глобальная среда

Как кто-то еще упомянул, вам нужно перезагрузить компьютер или выйти из системы / войти в систему, чтобы изменения /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

0
ответ дан 19 September 2017 в 18:19

Другие вопросы по тегам:

Похожие вопросы: