Является ли хорошей идеей поставить переменные среды в / 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 
  • Что такое SSH_TTY и SSH_CONNECTION?
  • Нет звука при подключении к док-станции
  • Как определить службу системы Ubuntu Linux16.04 для fastcgi-mono-server4 или xsp4?
  • У меня нет / dev / dsa, но у меня есть звук!
  • Gnome-терминал медленно запускается с запуска, быстро при запуске с терминала
  • Измените базовое DN каталога LDAP на организацию
  • Я должен иметь 500 гб пространства, но я могу использовать только 250
  • скриншот только активный монитор на ubuntu / debian
  • Не удалось удалить файлы с USB-накопителя (ни по dd / dev / zero, ни по rm -r)
  • Два cronjobs не работают (один для запуска процесса, один для остановки процесса)
  • simplescreenrecorder в ubuntu: звук не ясен
  • Linux и Unix - лучшая ОС в мире.