✔️Расширение для оболочки (shell), которое добавляет возможность автоматически загружать и выгружать переменные окружения в зависимости от текущего каталога. Это позволяет создавать изолированные среды для каждого проекта, избегать конфликтов между ними и не захламлять глобальные конфигурационные файлы, такие как
~/.profile.➡️ Как работает:
▶️Перед каждой командной строкой Direnv проверяет наличие файла
.envrc (и опционально — .env) в текущем и родительском каталогах. Если файл существует и авторизован (то есть пользователь явно разрешил его выполнение), он загружается во вложенную оболочку Bash. Все экспортированные переменные затем фиксируются Direnv и становятся доступными текущей оболочке. При выходе из каталога переменные выгружаются.▶️Важно, что Direnv не загружает
.envrc напрямую в текущую оболочку. Он создаёт отдельный подпроцесс Bash, загружает туда все настройки, вычисляет разницу в переменных окружения и возвращает только эти изменения обратно в исходную оболочку. Из-за этого нельзя экспортировать псевдонимы или функции через .envrc — только переменные окружения.➡️ Direnv интегрируется с популярными оболочками, включая:
💠Bash;
💠Zsh;
💠Fish;
💠Tcsh;
💠Elvish;
💠PowerShell;
💠Murex;
💠Nushell.
➡️ Основные сценарии использования
💠Изоляция окружений для проектов. Например, для каждого проекта можно задать свои ключи API, версии баз данных или специфические пути в
PATH. 💠Загрузка переменных для методологии 12-factor apps. Это методология для создания приложений, где переменные окружения управляются автоматически.
💠Загрузка секретов при развёртывании.
💠Создание многоверсионных решений по аналогии с
rbenv, pyenv, phpenv.💠Работа с Nix: Direnv может автоматически активировать нужный
shell при входе в папку с проектом🐙 Перейти на Github
🔨 bash_help
