前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在为多环境下项目管理的问题困扰吗,用上 direnv 后工作轻松乐无忧!

还在为多环境下项目管理的问题困扰吗,用上 direnv 后工作轻松乐无忧!

作者头像
iMike
发布2020-04-16 16:37:58
1.1K0
发布2020-04-16 16:37:58
举报
文章被收录于专栏:运维之美

direnv 是一个强大的环境变量管理工具,可以帮助我们简化环境变量管理。它可以根据当前目录自动加载或卸载环境变量,允许不同项目使用特定的环境变量。

项目地址:https://direnv.net/

direnv 安装

direnv 是基于 Go 语言开发,原生支持多平台,安装起来也是很简单的。

  1. 通过二进制版本安装

这里以 Linux 平台为例:

代码语言:javascript
复制
$ wget -c https://github.com/direnv/direnv/releases/download/v2.20.0/direnv.linux-amd64
$ mv direnv.linux-amd64 direnv
$ sudo mv direnv /usr/local/bin/

如果你使用的是其它平台,可在官方项目地址的 Releases 页面自行下载对应操作系统的文件。

  1. 配置以及集成 Shell

针对不同的 Shell 使用不同的 Hook 方式进行关联,这里我们说说最常用的两种 Bash 和 ZSH。

  • Bash

如果你使用的是 Bash,直接运行下面的命令即可。

代码语言:javascript
复制
eval "$(direnv hook bash)"

如果你想长期使用 direnv,可以将以上命令加入到 ~/.bashrc 文件中。

  • ZSH

如果你使用的是 ZSH,直接运行下面的命令即可。

代码语言:javascript
复制
eval "$(direnv hook zsh)"

同样,如果你需要长期使用 direnv,可以将以上命令加入到 ~/.zshrc 文件中。

到这里,安装就算完成了,下面我们看看怎么使用吧。

direnv 使用

这里我们创建两个目录,分别叫 myenv1 和 myenv2,然后我们测试分别进入不同目录时自动切换环境变量。

  1. 在 myenv1 目录下创建一个 .envrc 文件,并设置了一个环境变量并打印欢迎消息,内容如下:
代码语言:javascript
复制
$ vim .envrc
#!/bin/bash
export myenv=myenv1
echo -e "\e[1;34m##################################################\e[0m"
echo -e "\e[1;34m#               Welcome to $myenv                #\e[0m"
echo -e "\e[1;34m##################################################\e[0m"
  1. 同样也在 myenv2 目录下创建一个 .envrc 文件,并设置了一个环境变量并打印欢迎消息,内容如下:
代码语言:javascript
复制
$ vim .envrc
#!/bin/bash
export myenv=myenv2
echo -e "\e[1;34m##################################################\e[0m"
echo -e "\e[1;34m#               Welcome to $myenv                #\e[0m"
echo -e "\e[1;34m##################################################\e[0m"

这里需要注意一下,在编辑文件保存退出时会提示下面的内容:

代码语言:javascript
复制
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

此时,我们需要使用下面命令使修改生效。

代码语言:javascript
复制
$ direnv allow
  1. 下面看看分别进入 myenv1 和 myenv2 目录时环境变量的变化。
代码语言:javascript
复制
# 进行 myenv1 目录
$ cd myenv1
direnv: loading .envrc
##################################################
#               Welcome to myenv1                #
##################################################
direnv: export +myenv

$ env | grep myenv
DIRENV_DIR=-/home/mike/test/myenv1
PWD=/home/mike/test/myenv1
myenv=myenv1

# 进行 myenv2 目录
$ cd myenv2
direnv: loading .envrc
##################################################
#               Welcome to myenv2                #
##################################################
direnv: export +myenv

$ env | grep myenv
DIRENV_DIR=-/home/mike/test/myenv2
PWD=/home/mike/test/myenv2
myenv=myenv2

至此,direnv 的基本功能就演示完了。但 direnv 的功能远不止这些,更多的高级功能如果你有兴趣可以自行发掘。

参考文档

  1. https://www.google.com
  2. https://www.cnblogs.com/rongfengliang/p/10730008.html
  3. https://www.jianshu.com/p/efbc215f65ef
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奇妙的Linux世界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • direnv 安装
  • direnv 使用
  • 参考文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档