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

51

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

  1. Глобальные переменные окружения, предназначенные для всех пользователей?
  2. Пользовательские переменные среды?
задан Ivan 24.09.2010 в 05:39
источник

4 ответа

14

Я думаю, это поможет вам разобраться

    
ответ дан sagarchalise 24.09.2010 в 05:49
источник
68

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

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

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

На странице:

  

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

Использование /etc/profile - очень простой способ Unix-y, но его функциональность значительно снижается при 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 предпочитает ~/.bash_profile до ~/.bash_login . [...] Эти файлы не будут влиять на графический сеанс по умолчанию.

  • ~/.bashrc - «... может быть самым простым местом для установки переменных».

ответ дан belacqua 14.02.2011 в 22:32
7

У вас есть:

  

/ etc / profile: общесистемный файл .profile для оболочки Bourne (sh (1))   и борн-совместимые оболочки (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

для sh / тире:

$HOME/.profile

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

ответ дан msw 24.09.2010 в 05:53
5

Как рекомендовано на Ссылка :

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

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

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

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

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

My ~/.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 . Это решение, по-видимому, работает для более ранних выпусков, но я его не тестировал.

Guenther Montag (g-montag ) написал в 2010-08-19:

  

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

     

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

     

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

Адаптировано из моего ответа на Super User: Ссылка

    
ответ дан Alain O'Dea 04.04.2012 в 06:16