Как программно установить постоянную переменную среды в Linux?

Я пишу немного сценария установки для некоторого программного обеспечения. Все, что это делает, распаковывают целевой tar, и затем я хочу постоянно установить некоторые переменные среды - преимущественно, местоположение распакованного освобождает и $PATH обновления. Сделайте я должен программно отредактировать .bashrc файл, добавляя соответствующие записи в конец, например, или там иначе? Что такое общепринятая практика?

Править: Пакет включает много запущенных скриптов (20 +), который весь используют эти именованные переменные среды, таким образом, я должен установить их так или иначе (имена переменной были выбраны таким образом, что коллизия крайне маловероятна),

10
задан Cœur 16 November 2019 в 11:52
поделиться

3 ответа

LSB-совместимый (см. spec ) практика такова: для создания сценария оболочки в папке /etc/profile.d/ .

Назовите его в честь вашего приложения (и убедитесь, что имя уникально), убедитесь, что имя заканчивается на .sh (вы можете добавить скрипты и для других оболочек) и экспортировать переменные, которые вам нужны в скрипте. Все сценарии * .sh из этого каталога читаются при входе пользователя в систему - в то же время / etc / profile является источником d.

Обратите внимание, что это не выполняется bash ; скорее, это своего рода соглашение.

16
ответ дан 3 December 2019 в 18:32
поделиться

Вы также можете сгенерировать и установить сценарий, который устанавливает эти переменные. Затем пользователи вашего пакета отправляют этот сценарий или копируют его содержимое в свой собственный файл инициализации оболочки.

2
ответ дан 3 December 2019 в 18:32
поделиться

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

Обновление .bashrc, помимо прочего, несколько подвержено сбоям; что, если пользователь использует другой файл или оболочку?

3
ответ дан 3 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: