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

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

  • Случайная удаленная папка блокировки
  • Сценарий в cron не может найти команду
  • Какая команда запускается, когда опция dpkg выбрана в режиме восстановления?
  • (SSH) Опасно ли закрывать терминал без «выхода»?
  • Как изменить индекс поиска в Ubuntu 11.04?
  • inotifywait различные действия по файлу или директории
  • Запустить vino-сервер в Ubuntu 16.04 lts
  • php5-embed не загружает расширения
  • 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 
    Interesting Posts

    Проблема с командой promp cycling при использовании цветов и попытке поместить ветви git в командную строку

    Как скопировать большие файлы по сети

    В чем разница между gksu и sudo?

    Захват содержимого строки состояния tmux

    Не удалось загрузить модули ядра

    Для сценария запуска init.d, какой идеальный пользователь использовать в качестве владельца этого процесса

    Флаг -X (пересылка X11) не работает в Windows

    Как исключить из «Match Group» в SSHD?

    Предоставлять доступ только для чтения к определенным папкам?

    Ядерная паника после перехода от хриплых к jessie

    установка каталога $ HOME для каталога Cygwin для Windows

    Автоматически монтировать диск с помощью / etc / fstab и ограничивать доступ ко всем пользователям определенной группы

    Удалить все файлы NVIDIA

    Заменить значения в таблице

    Как заставить HDMI-аудио (интеллектуальную карту) активироваться, несмотря на то, что вы получили поврежденный EDID

    Linux и Unix - лучшая ОС в мире.