Хорошая ли идея поместить переменные окружения в /usr/local/bin?

Хорошая ли идея поместить переменные окружения в /usr/local/bin?

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

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

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

Хороший ли это подход?

решение1

Хороший ли это подход?

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

db-server=db-2.domain.com

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

. /usr/local/etc/myapp

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

решение2

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

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

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

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

db-server=db-2.domain.com

решение3

Я бы сказал нет этой идее. Этот каталог /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

Связанный контент