Ответы:
Я думаю, что вики-страница сообщества по переменным среды поможет вам разобраться
Чтобы добавить ответ 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 предпочтет ~/.bash_profile
в ~/.bash_login
. [...] Эти файлы не влияют на графическую сессию по умолчанию. "
~/.bashrc
- "... может быть проще всего установить переменные". /etc/environment
и когда? Похоже, что он не работает с Cron, даже при использованииSHELL=/bin/bash
/etc/environment
нравится JAVA_HOME="/opt/java"
и ANT_HOME="/opt/ant"
как это сделать
У тебя есть:
/ 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 :
Глобальные переменные среды должны влиять на всех пользователей /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
${HOME}
тоже не сработает. Там нет расширения в .pam_environment
.
.pam_environment
, но HOME
обычно не так рано. Если бы эта строка прочитала DEFAULT=${PATH}/Applications/jdk
, вы бы увидели значение PATH
вставленной в нее.