2010-05-23 2 views
10

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

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

ответ

16

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

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

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

+0

ОК, похоже, это может быть решение. предположительно, установщик должен быть запущен как root для написания исполняемого скрипта здесь. –

+0

Этот сценарий читается также службами? Например, apache или tomcat? – Tobia

3

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

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

+1

+1 правильный. Пользователи были бы очень недовольны, если бы вы попытались отредактировать их .bashrc для них. Если вы хотите установить в нестандартный каталог - или не думаете, что у вашего пользователя будет разрешение - пусть они укажут '--install-dir = mydir' и скажут, что им нужно будет добавить в свою среду , Есть хороший пример на http://golang.org/doc/install.html – msw

+0

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

+2

Одним из способов является их источник в сценарии оболочки, который вызывает ваши скрипты. – WhirlWind

2

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

+4

Или скрипт-оболочка вызывает скрипт var-setting с известным именем и местом, а затем вызывает исходный исполняемый файл. –

Смежные вопросы