Direnv环境变量管理工具


面向移动和 Web 开发人员的开源后端服务器

direnv 是一个基于 golang 开发的简单而又强大的环境变量管理工具,其可以帮助我们简化环境变量的管理,同时还支持多种操作平台,包括 MacOSUbuntuFedora 等等。

Direnv环境变量管理工具


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 的文件。如果文件存在并且有权限访问的话,则会将其加载到 BASHshell 中,然后通过 Direnv 捕获所有导出的变量,提供给当前 shell 使用。如果 .envrc.env 文件同时存在的话,则将优先选择 .envrc 文件。

它支持像 BashZSHTCSHFISH 这样的所有常见的 Shell 工具,允许项目特定的环境变量而不会对 〜/.profile 文件进行混乱。因为 Direnv 被编译成一个静态可执行文件,所以它足够快,在每个提示符上都不会被注意到。它也是语言无关的,可以用来构建类似于 rbenvpyenvphpenv 的解决方案。


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. 参考链接

送人玫瑰,手有余香!


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录