使用 direnv 自动加载当前文件夹环境变量
前言
direnv 通过 hook 当前的 shell 来根据当前目录加载或卸载环境变量。
当进入项目对应目录之后,direnv 会检查当前和父目录中是否存在 .envrc 或 .env 的文件。如果文件存在并且有权限访问的话,则会将其加载到 BASH 的 shell 中,然后通过 direnv 捕获所有导出的变量,提供给当前 shell 使用。如果 .envrc 和 .env 文件同时存在的话,则将优先选择 .envrc 文件。
它支持像 Bash、ZSH、TCSH 和 FISH 这样的所有常见的 Shell 工具,允许项目特定的环境变量而不会对 ~/.profile 文件进行混乱。direnv 是 Go 语言编写的, 被编译成一个静态可执行文件,所以速度足够快。它也是语言无关的,可以用来构建类似于 rbenv、pyenv 和 phpenv 的解决方案
安装
直接安装
1 | sudo apt update |
使用官方脚本
1 | curl -sfL https://direnv.net/install.sh | bash |
Hook shell
- For Bash
1 | echo -e 'eval "\$(direnv hook bash)"' >> ~/.bashrc |
- For Zsh
1 | echo -e 'eval "$(direnv hook zsh)"' >> ~/.zshrc |
使用
在当前目录创建一个 .envrc
的文件, 写好你要添加的环境变量或者要 source
的命令
运行direnv allow
生效. 如果想要临时不生效, 可以运行direnv deny .
python 项目
1 | # .envrc |
docker-compose 传参
1 | version: "3" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuckyHunter's notes!