Где объявить переменные среды?

Каковы правильные места для:

  1. Глобальные переменные среды должны влиять на всех пользователей?
  2. Пользовательские переменные среды?

4 ответа

Решение

Я думаю, что вики-страница сообщества по переменным среды поможет вам разобраться

Чтобы добавить ответ sagarchalise, я могу суммировать, что ссылка предлагает в качестве подходящих мест для настроек.

Для глобальных настроек, общесистемных переменных среды

  • использование /etc/environment
  • Не использовать /etc/profile или же /etc/bash.bashrc

Со страницы:

/etc/environment [...] специально предназначено для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. В частности, этот файл хранит общесистемные настройки языка и пути.

С помощью /etc/profile это очень Unix-у путь, но его функциональность значительно снижена в Ubuntu. Он существует только для указания на /etc/bash.bashrc и собирать записи из /etc/profile.d,

В моей системе единственная интересная запись в файле profile.d: /etc/profile.d/bash_completion.sh,

Для локальных или индивидуальных настроек

Предыдущая версия страницы Ubuntu рекомендуется ~/.pam_environment, но страница в настоящее время предлагает, что если это не работает, вы должны использовать

  • ~/.profile - Вероятно, это лучший файл для размещения назначений переменных среды, поскольку он выполняется автоматически DisplayManager во время сеанса рабочего стола процесса запуска, а также оболочкой входа в систему при входе из текстовой консоли.

  • ~/.bash_profile или же ~./bash_login - Если один из них существует, bash выполняет его вместо ~/.profile когда bash запускается как оболочка для входа. Баш предпочтет ~/.bash_profile в ~/.bash_login, [...] Эти файлы не влияют на графическую сессию по умолчанию. "

  • ~/.bashrc - "... может быть проще всего установить переменные".

У тебя есть:

/ etc / profile: общесистемный файл.profile для оболочки Bourne (sh(1)) и совместимых с Bourne оболочек (bash(1), ksh(1), ash(1), ...).

который в Lucid и Maverick работает

/etc/profile.d/*.sh

если присутствует, и если оболочка пользователя bash:

/etc/bash.bashrc

Для пользовательской среды существует запутанный массив, специфичный для оболочки, и считается ли он "оболочкой входа в систему". Если оболочка bash:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

для ш / тире:

$HOME/.profile

для zsh я даже не собираюсь пытаться понять это.

Как рекомендовано на https://help.ubuntu.com/community/EnvironmentVariables:

  1. Глобальные переменные среды, предназначенные для воздействия на всех пользователей, должны войти в /etc/environment,

  2. Пользовательские переменные среды должны быть установлены в ~/.pam_environment,

Избегайте профилей и файлов rc для установки переменных среды в Ubuntu. Они вызвали у меня больше головной боли, чем они того стоят.

Это легче сказать, чем сделать, однако;)

Возможно, вы столкнетесь с тем же разрывом в конфигурации, который существовал для меня. Смотрите обходной путь для зашифрованного дома ниже.

мой ~/.pam_environment:

PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK        DEFAULT=${HOME}/Applications/jdk

Почему уродливый статический путь? ${PATH} не будет работать для меня. Я несколько раз пытался обойти свой логин, пытаясь обойти его, поэтому я придерживался уродливой статической копии значений по умолчанию:)

Обходной путь для зашифрованных домашних папок

В выпусках Ubuntu вплоть до Precise 12.04 Beta 2 включительно, если вы используете зашифрованный домашний каталог, вам нужно будет изменить /etc/pam.d/common-session чтобы загрузить его ~/.pam_environment, Это решение, очевидно, работает для более ранних выпусков, но я не проверял его.

Гюнтер Монтег (g-montag) написал 2010-08-19:

Это кажется проблемой с зашифрованными домашними каталогами. я добавил

требуется сеанс pam_env.so

в конце /etc/pam.d/common-session и теперь ~/.pam_environment читается. В другой системе без зашифрованных домашних каталогов (также 10.04) обходной путь не требуется. Возможно, в моем случае система пытается прочитать ~/.pam_environment, прежде чем она расшифрована.

Адаптировано из моего ответа на Супер пользователя: https://superuser.com/a/408373/66856

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