Он скомпилирован в один статический исполняемый файл и поддерживает такие оболочки, как bash, zsh, tcsh и fish.
Основное назначение direnv – разрешить переменные среды, специфичные для проекта, не загромождая ~/.profile или связанные файлы запуска оболочки.
Он реализует новый способ загрузки и выгрузки переменных среды в зависимости от текущего каталога.
Он используется для загрузки переменных среды приложений 12factor (методология создания приложений «программное обеспечение как услуга»), создания изолированных сред разработки для каждого проекта, а также для загрузки секретов в развертываниях.
Так как работает direnv?
В большинстве дистрибутивов Linux пакет direnv доступен для установки из репозиториев по умолчанию с помощью системного менеджера пакетов, как показано на рисунке.
$ sudo apt install direnv #Debian,Ubuntu и Mint $ sudo dnf install direnv #Fedora
$ 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
$ mkdir ~/itsecforu_projects $ cd itsecforu_projects/
$ echo $TEST_VARIABLE
$ echo export TEST_VARIABLE=itsecforu > .envrc
$ direnv allow .
$ echo $TEST_VARIABLE
$ cd .. $ echo $TEST_VARIABLE
Каждый раз, когда вы перемещаетесь в каталог itsecforu_projects, файл .envrc будет загружаться, как показано ниже:
$ cd itsecforu_projects/
Чтобы отменить авторизацию данного .envrc, используйте команду deny.
$ direnv deny . # в текущем каталоге или $ direnv deny /path/to/.envrc
$ man direnv
Кроме того, direnv также использует stdlib (direnv-stdlib), поставляется с несколькими функциями, которые позволяют вам легко добавлять новые каталоги в ваш PATH и делать гораздо больше.
Чтобы найти документацию по всем доступным функциям, проверьте страницу руководства direnv-stdlib:
$ man direnv-stdlib
Если у вас есть какие-либо вопросы или мысли, чтобы поделиться с нами, используйте форму обратной связи ниже.