Назад | Перейти на главную страницу

Как лучше всего настроить общесистемные переменные среды в Linux?

Я просто хочу настроить общесистемную переменную среды, JAVA_HOME для все пользователи, включая root пользователь.

Требования:

Для Ubuntu и, возможно, других платформ * nix добавьте новый скрипт в /etc/profile.d названный java.sh, Такие как:

echo "export JAVA_HOME=/usr/lib/jvm/default-java" > /etc/profile.d/java.sh

Другие соображения, которые были исключены:

  • /etc/environment - работает, но труднее поддерживать с помощью других инструментов (или люди будут редактировать его); и
  • /etc/profile - те же недостатки, что и /etc/environment

В Debian / Ubuntu это будет / etc / окружающая среда

Я не знаю эквивалента Red Hat.

Я не понимаю, почему вы исключили / etc / profile. Это правильное место.

Некоторые ответили, что /etc/environment является устаревшим и / или больше не используется в Debian, и это (как и в версии 7) неверно.

Файл фактически читается PAM - в частности, pam_env(8), по умолчанию envfile флаг. На странице руководства также указано это значение по умолчанию в разделе ФАЙЛЫ.

Цитируемые вики (особенно локаль) просто заявляют, что переменные среды на основе локали теперь должны находиться в /etc/profile. Их утверждение «(в более старых версиях Debian также / etc / environment)» расплывчато и относится к локальным условиям.

Быстрый просмотр /etc/pam.d показывает:

root@box:/etc/pam.d# grep pam_env.so *
atd:auth        required        pam_env.so
cron:session       required   pam_env.so
cron:session       required   pam_env.so envfile=/etc/default/locale
login:session       required   pam_env.so readenv=1
login:session       required   pam_env.so readenv=1 envfile=/etc/default/locale
sshd:auth       required     pam_env.so # [1]
sshd:auth       required     pam_env.so envfile=/etc/default/locale
su:session       required   pam_env.so readenv=1
su:session       required   pam_env.so readenv=1 envfile=/etc/default/locale

Эти строки конфигурации являются добавочными, и, поскольку первая отсутствует envfile, поэтому по умолчанию /etc/environment.

Все это, конечно, зависит от используемого вами двоичного файла (crond, оболочки входа и т. д.) скомпилированы с PAM.

Наконец, это означает, что другие системы, использующие PAM (например, RedHat), ведут себя так же, как это видно на соответствующей странице руководства.

Одно примечание: взгляните на Модули Среда. Я использую это каждый раз, когда мне нужно предложить сложную, управляемую версиями, саморасширяемую и лаконичную среду UNIX десяткам или сотням пользователей. Он в основном используется в крупномасштабных многопользовательских средах высокопроизводительных вычислений. Простое использование его для одной конкретной переменной, безусловно, является чрезмерной инженерией, но он отлично справляется с работой, когда вам нужно больше, чем несколько программных пакетов и их окружение.

/etc/profile должно сработать. Я только что тестировал, чтобы убедиться, поставил export SOMETEST=1234 к /etc/profile и после перезагрузки echo $SOMETEST дал мне 1234 как и ожидалось. Также из gnome-terminal

/etc/enviroment не используется в последнем стабильном выпуске debian. Рекомендация - создать свой собственный *.sh файл в /etc/profile.d/ для этой цели, как сказал Сорин С. Видеть https://wiki.debian.org/EnvironmentVariables

В этом случае вы не можете использовать какие-либо конкретные файлы. так....

/etc/profile было бы подходящим местом для этого в этом случае. Текущие зарегистрированные пользователи должны получить новый сеанс входа в систему, но это не должно быть большой проблемой.

@ wk01: /etc/profile по умолчанию не загружается оболочкой без входа. ваш .bashrc наверное загружает ...