Каковы правильные места для:
- Глобальные переменные окружения, предназначенные для всех пользователей?
- Пользовательские переменные среды?
Каковы правильные места для:
Чтобы добавить к ответу 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
- «... может быть самым простым местом для установки переменных». Р>
У вас есть:
/ 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, я даже не собираюсь пытаться понять это . р>
Как рекомендовано на Ссылка :
Глобальные переменные среды, которые должны влиять на всех пользователей, должны идти в /etc/environment
.
Пользовательские переменные среды должны быть установлены в ~/.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
. Это решение, по-видимому, работает для более ранних выпусков, но я его не тестировал.
Это, похоже, проблема с зашифрованными домашними каталогами. Я добавил
требуется сеанс pam_env.so
в конце /etc/pam.d/common-session и теперь читается ~ / .pam_environment. В другой системе без зашифрованных домашних каталогов (также 10.04) работа вокруг не нужна. Возможно, в моем случае система пытается прочитать ~ / .pam_environment перед расшифровкой.
Адаптировано из моего ответа на Super User: Ссылка