Відповіді:
Я думаю, що сторінка вікі спільноти про змінні середовища допоможе вам розібратися
Щоб додати відповідь 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/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), ...).
які в Люцид і Маверик бігають
/etc/profile.d/*.sh
якщо він присутній і якщо оболонка користувача баш:
/etc/bash.bashrc
Для середовища користувача існує заплутаний масив, специфічний для оболонки та чи вважається він "оболонкою входу". Якщо оболонка забита:
~/.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 до та включає Precision 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: https://superuser.com/a/408373/66856
${HOME}
не буде працювати. Розширення в .pam_environment
.
.pam_environment
, але HOME
не встановлено, що рано, як правило. Якби цей рядок був прочитаний DEFAULT=${PATH}/Applications/jdk
, ви б побачили значення PATH
вставленого в нього.