🐧 Direnv – Управление переменными среды проекта на Linux |

🐧 Direnv – Управление переменными среды проекта на Linux

Обзоры
direnv – это отличное расширение с открытым исходным кодом для вашей оболочки в операционных системах UNIX, таких как Linux и macOS.

Он скомпилирован в один статический исполняемый файл и поддерживает такие оболочки, как bash, zsh, tcsh и fish.

Основное назначение direnv – разрешить переменные среды, специфичные для проекта, не загромождая ~/.profile или связанные файлы запуска оболочки.

Он реализует новый способ загрузки и выгрузки переменных среды в зависимости от текущего каталога.

Он используется для загрузки переменных среды приложений 12factor (методология создания приложений «программное обеспечение как услуга»), создания изолированных сред разработки для каждого проекта, а также для загрузки секретов в развертываниях.

Кроме того, его можно использовать для создания многоверсионных решений по установке и управлению, аналогичных rbenv, pyenv и phpenv.

Так как работает direnv?

В большинстве дистрибутивов Linux пакет direnv доступен для установки из репозиториев по умолчанию с помощью системного менеджера пакетов, как показано на рисунке.

$ sudo apt install direnv		#Debian,Ubuntu и Mint
$ sudo dnf install direnv		#Fedora
В других дистрибутивах, таких как Red Hat Enterprise Linux (RHEL) и CentOS или в любом дистрибутиве, поддерживающем привязки, вы можете установить его как оснастку.
Это требует, чтобы вы установили snapd в вашей системе.
$ sudo snap install direnv

Как подключить direnv в вашу оболочку Bash

После установки direnv вам нужно подключить его к вашей текущей оболочке Linux.

Например, для Bash, добавьте следующую строку в конец файла ~/.bashrc.

Убедитесь, что он появляется даже после rvm, git-prompt и других расширений оболочки, которые управляют приглашением.

eval "$(direnv hook bash)"

Для ZSH шелла

Добавьте следующую строку в конец файла ~/.zshrc:

eval "$(direnv hook zsh)"

Для FISH шелла

Добавьте следующую строку в конец файла ~/.config/fish/config.fish:

eval (direnv hook fish)
Затем закройте окно активного терминала и откройте новую оболочку или загрузите файл, как показано ниже:
$ source ~/.bashrc
$ source  ~/.zshrc 
$ source ~/.config/fish/config.fish

Как использовать direnv на Linux

Чтобы продемонстрировать, как работает direnv, мы создадим новый каталог с именем itsecforu_projects и перейдем в него.
$ mkdir ~/itsecforu_projects
$ cd itsecforu_projects/
Далее, давайте создадим новую переменную с именем TEST_VARIABLE в командной строке, и когда она отображается, значение должно быть пустым:
$ echo $TEST_VARIABLE
Теперь мы создадим новый файл .envrc, содержащий код Bash, который будет загружен direnv.
Мы также пытаемся добавить в нее строку «export TEST_VARIABLE = itsecforu», используя команду echo и символ перенаправления вывода (>):
$ echo export TEST_VARIABLE=itsecforu > .envrc
По умолчанию механизм безопасности блокирует загрузку файла .envrc.
Поскольку мы знаем, что это безопасный файл, нам нужно утвердить его содержимое, выполнив следующую команду:
$ direnv allow .
Теперь, когда содержимое файла .envrc разрешено загружать, давайте проверим значение TEST_VARIABLE, которое мы установили ранее:
$ echo $TEST_VARIABLE
Когда мы выходим из каталога itsecforu_project, direnv будет выгружен, и если мы еще раз проверим значение TEST_VARIABLE, оно должно быть пустым:
$ cd ..
$ echo $TEST_VARIABLE

Каждый раз, когда вы перемещаетесь в каталог itsecforu_projects, файл .envrc будет загружаться, как показано ниже:

$ cd itsecforu_projects/

Чтобы отменить авторизацию данного .envrc, используйте команду deny.

$ direnv deny .			# в текущем каталоге
или
$ direnv deny /path/to/.envrc
Для получения дополнительной информации и инструкций по использованию см. справочную страницу direnv:
$ man direnv

Кроме того, direnv также использует stdlib (direnv-stdlib), поставляется с несколькими функциями, которые позволяют вам легко добавлять новые каталоги в ваш PATH и делать гораздо больше.

Чтобы найти документацию по всем доступным функциям, проверьте страницу руководства direnv-stdlib:

$ man direnv-stdlib

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

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий