Является ли хорошей идеей поставить переменные среды в / usr / local / bin

Я использую aws cfn для запуска экземпляров ubuntu, и мне нужно передать переменные, предоставленные в сценарии запуска cfn, в сценарии экземпляра. Например, я могу передать «db-server = db-2.domain.com», и в экземпляре есть несколько скриптов, которые хотят знать этот адрес.

На данный момент я создаю файл в /etc/profile.d, устанавливая vars с export , но это работает только в том случае, если bash запускается как оболочка входа, что требует дополнительных действий с моей стороны, чтобы иметь эти переменные повсюду.

Поэтому, хотя я мог бы вместо этого создать файлы в / usr / local / bin, например get-db-host.sh с echo "db-2.domain.com" качестве контента, таким образом они будут доступны для каждого скрипта с изменений не требуется.

Это хороший подход?

  • Создание локального собственного веб-сервера тестирования
  • Как программное обеспечение скомпилировано и перенесено на Ubuntu?
  • Как использовать расширения Gnome
  • В Ubuntu, как установить статический IP-адрес для firewire?
  • Пакеты, необходимые для работы звука
  • Root Cron не будет запускать скрипт (разрешение отклонено)
  • Изменение GID системных групп (GID 100 - 105 до 200 - 205)
  • Понимание различных дистрибутивов Linux
  • 3 Solutions collect form web for “Является ли хорошей идеей поставить переменные среды в / usr / local / bin”

    Это хороший подход?

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

     db-server=db-2.domain.com 

    Поместите это в стандартное место (например, /usr/local/etc/myapp/ ) и отправьте его в другие скрипты:

     . /usr/local/etc/myapp 

    Вы также можете использовать просто plain /etc , очевидно.

    Рекомендуемый метод – просто добавить переменные в /etc/environment . Этот файл читается при входе в систему (из документов Ubuntu ):

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

    / etc / environment – Этот файл специально предназначен для общесистемных параметров среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. В частности, этот файл хранит общесистемные настройки языка и пути.

    Итак, просто отредактируйте /etc/environment/ и добавьте

     db-server=db-2.domain.com 

    Я бы отказался от этой идеи. Этот каталог /usr/local/bin предназначен для исполняемых файлов, которые являются локальными в поле, а не частью какого-либо конкретного пакета (обычно).

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

    Я поместил их в файл в ваш каталог $HOME и просто отправлю этот файл из вашего $HOME/.bashrc .

    пример

     if [ -f $HOME/.my_aws_env ]; then . $HOME/.my_aws_env fi 

    Или вы можете быть крутыми и бедрами и делать это в одной строке:

     [ -f $HOME/.my_aws_env ] && . $HOME/.my_aws_env 
    Linux и Unix - лучшая ОС в мире.