Является ли хорошей идеей поставить переменные среды в / 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" качестве контента, таким образом они будут доступны для каждого скрипта с изменений не требуется.

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

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 
  • Как реализовать предложение об установке пакета на Debian?
  • mount: неправильный тип fs, плохая опция, плохой суперблок
  • Ubuntu 12.10 не распознает мои активные окна 7 разделов
  • Убийство X-связанных процессов при запуске CrashPlan
  • Соединение AWS ubuntu Connection отказано
  • Использование SSH-папок в качестве каталога для моей локальной системы?
  • Как изменить вывод на терминале bash для всех выходов
  • Как запустить последующие оболочки с правами root?
  • Не удается загрузить, задача btrfs-transacti заблокирована более чем на 120 секунд, как это исправить?
  • apt-get подсказки для компакт-дисков при установке пакетов, как мне его остановить?
  • Почему ошибка загрузки с моим настраиваемым ядром на этапе mknod?
  • Доступно ли простое в использовании многофакторное полное шифрование диска?
  • Linux и Unix - лучшая ОС в мире.