Я просто хочу установить общесистемную переменную среды JAVA_HOME
для всех пользователей, включая пользователя root .
Требования:
- доступно для обычных пользователей
- доступный для root
- всегда загружен, не только для bash (gnome-терминал не запускает bash по умолчанию)
- работать на Ubuntu, Debian и, возможно, Red Hat
- здорово, если дополнение может быть легко написано
Ответы:
Поскольку никто не добавил полный ответ, то это то, что я в настоящее время считаю лучшим, по крайней мере, для Ubuntu, но я готов адаптировать ответ для других * nix-платформ.
Другие варианты, которые уже рассматривались, но исключены:
/etc/environment
работает, но его сложнее поддерживать, так как другие инструменты или люди могут его редактировать./etc/profile
- так же, как и вышеисточник
В Debian / Ubuntu это будет / etc / environment
Я не знаю эквивалент Red Hat.
источник
/etc/environment
. См. Также serverfault.com/a/584072/26218Я не понимаю, почему вы исключили / etc / profile. Это правильное местоположение.
источник
Некоторые ответили, что они
/etc/environment
запрещены и / или больше не используются в Debian, и это (как в версии 7) неверно.Файл фактически читается PAM - в частности
pam_env(8)
, по умолчанию сenvfile
флагом. На man-странице также указано это значение по умолчанию в разделе FILES.Цитируемые вики (особенно локаль) просто утверждают, что переменные среды на основе локали теперь должны быть в
/etc/profile
. Их утверждение «(в более старых версиях Debian, также / etc / environment)» расплывчато и находится в контексте локалей.Быстрый просмотр
/etc/pam.d
шоу:Эти строки конфигурации являются аддитивными, и, поскольку первая отсутствует
envfile
, по умолчанию она имеет значение/etc/environment
.Все это, конечно, зависит от того, какой двоичный файл вы используете (для
crond
входа в систему и т. Д.), Скомпилированный с PAM.Наконец, это подразумевает, что другие системы, использующие PAM (например, RedHat), ведут себя так же, как это видно на соответствующей странице man.
источник
Еще одно примечание: взгляните на среду модулей . Я использую это каждый раз, когда мне приходится предлагать сложную, версионную, саморасширяющуюся и сжатую среду 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
, вероятно, загружаете это ...источник