面向移动和 Web 开发人员的开源后端服务器
direnv 是一个基于 golang 开发的简单而又强大的环境变量管理工具,其可以帮助我们简化环境变量的管理,同时还支持多种操作平台,包括 MacOS、Ubuntu、Fedora 等等。
1. 工具安装
推荐使用 docker 进行容器化部署
Direnv 是一个 Shell 程序的扩展,它可以帮助我们更好地使用现有的 Shell 程序,其会根据当前目录(进入对应目录中之后)加载和卸载我们指定的环境变量。使用它之后,可以帮助我们创建每个项目独立的开发环境,或者部署加载秘钥信息,等等。安装分为两部分:
# from binary builds $ curl -sfL https://direnv.net/install.sh | bash $ chmod +x direnv $ mv direnv /usr/local/bin # from system packages $ apt install direnv $ yum install direnv
# bash hook - ~/.bashrc $ eval "$(direnv hook bash)" # zsh hook - ~/.zshrc $ eval "$(direnv hook zsh)" # fish hook - ~/.config/fish/config.fish $ direnv hook fish | source # tcsh hook - ~/.cshrc $ eval `direnv hook tcsh`
2. 工作原理
原来很简单,就是使用自定义的配置文件,完成的。
当进入目录对应目录之后,Direnv 会检查当前和父目录中是否存在 .envrc 或 .env 的文件。如果文件存在并且有权限访问的话,则会将其加载到 BASH 的 shell 中,然后通过 Direnv 捕获所有导出的变量,提供给当前 shell 使用。如果 .envrc 和 .env 文件同时存在的话,则将优先选择 .envrc 文件。
它支持像 Bash、ZSH、TCSH 和 FISH 这样的所有常见的 Shell 工具,允许项目特定的环境变量而不会对 〜/.profile 文件进行混乱。因为 Direnv 被编译成一个静态可执行文件,所以它足够快,在每个提示符上都不会被注意到。它也是语言无关的,可以用来构建类似于 rbenv、pyenv 和 phpenv 的解决方案。
3. 快速使用
安装之后,如何开始使用呢?
# 创建一个演示目录 $ mkdir ~/my-project $ cd ~/my-project # 可以看到FOO变量没有被用到 $ echo ${FOO-nope} nope # 创建.envrc文件新加自动以变量 - 安全机制不允许加载 $ echo export FOO=foo > .envrc .envrc is not allowed # 去除安全机制再进行使用 $ direnv allow . direnv: reloading direnv: loading .envrc direnv export: +FOO # 显示FOO环境变量被加载 $ echo ${FOO-nope} foo # 退出项目目录 $ cd .. direnv: unloading # 之前设置的变量看不到了 $ echo ${FOO-nope} nope
4. 参考链接
送人玫瑰,手有余香!