Что такое правильные места для:
Я думаю вики-страница сообщества по переменным окружения поможет вам разобраться
У вас есть:
/etc/profile: общесистемный .profile file для оболочки 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/dash:
$HOME/.profile
для zsh, то я даже не буду пытаться разобраться в этом.
Чтобы добавить к ответу 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
, который загружается системой PAM при запуске сеанса (TTY, GUI, SSH и т. д.). Это пользовательский эквивалент / etc / environment
и использует тот же синтаксис. Ссылка предлагает альтернативы, если это не работает:
~ / .profile
для большинства оболочек. Этот файл также может быть применен к сеансу графического интерфейса с помощью диспетчера дисплея, но это не обязательно относится ко всем диспетчерам дисплея или серверам дисплея (X11 против Wayland) или сеансам. И специфично для bash:
~ / .bash_profile
или ~. / bash_login
- Если один из них существует, bash выполняет его вместо ~ / .profile
, когда bash запускается как оболочка входа. Bash предпочтет ~ / .bash_profile
~ / .bash_login
. [...] По умолчанию эти файлы не влияют на графический сеанс. " ~ / .bashrc
-" ... может быть самым простым местом для установки переменных ". В соответствии с рекомендациями на https://help.ubuntu.com/community / EnvironmentVariables :
Глобальные переменные среды, предназначенные для воздействия на всех пользователей, должны находиться в / 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 перед его расшифровкой.
Адаптировано из моего ответа о суперпользователе: https://superuser.com/a/408373/66856