Я просто хочу настроить общесистемную переменную среды, 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
наверное загружает ...