direnv - .envrc
June 29, 2026 ยท View on GitHub
direnv reads .envrc files and auto-loads useful environment variables upon switching directories
that allow you to quickly switch between AWS profiles, EKS clusters, Terraform & Terragrunt versions or any number of
other software versions or profiles.
- Install direnv
- Commands
- Advanced Examples
- Multi-Environment Production Configurations
- More Related Repos
Install direnv
On Mac just:
brew install direnv
This is automatically installed as part of core software by make in DevOps-Bash-tools repo.
For other platforms and more install details read:
https://direnv.net/docs/installation.html
Commands
Enable direnv in your shell
Add the direnv hook to your shell $HOME/.bashrc or similar:
eval "$(direnv hook bash)"
Approve .envrc files
When you switch to a directory containing an .envrc file for the first time it will print a warning
that you need to approve the .envrc file.
cd to a dir with a .envrc and then run this allow it to automatically load this .envrc each time in future:
direnv allow
To edit, will auto-approve when you save and exit:
direnv edit
Advanced Examples
General - Ansible, Cloudflare, Docker, GitHub, Pre-Commit
Python
Since recent versions of pip on Macs don't like to let you install packages to the system python any more, you really need to keep a virtualenv activated all the times for your personal tools and scripts.
Create your Python virtual:
virtualenv ~/venv
Then use this .envrc to keep it automatically activated:
AWS
GCP
Kubernetes
.envrc-kubernetes - Kubernetes-configs repo
or
.envrc-kubernetes - DevOps-Bash-tools repo
Terraform
Multi-Environment Production Configurations
Code structured to be immediately reusable across companies with multiple environments eg. dev, staging and production.
Trivial to copy a directory and edit a couple lines of the .envrc stub files
to create a new environment directory that inherits all the above code.