前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >环境自动加载工具direnv

环境自动加载工具direnv

作者头像
kongxx
发布2019-03-04 16:20:04
1K0
发布2019-03-04 16:20:04
举报

最近在多个项目之间来回切换,其中不同项目需要使用同一个库的不同版本,来回切换太麻烦,于是乎,想到了曾经有同事给我建议的环境自动加载工具direnv,可以使我在命令行中根据进入的目录不同,自动加载不同的环境配置。下面就看看怎么使用吧。

下载安装

可以从 https://github.com/direnv/direnv 下载自己操作系统的包。

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

针对不同的shell使用不同的hook,这里我使用的是bash,所以运行下面的命令。

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

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

使用

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

在 myenv1 目录下创建 .envrc 文件,其中设置了一个环境变量并打印欢迎消息,内容如下:

代码语言:javascript
复制
#!/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"

在 myenv2 目录下创建 .envrc 文件,其中设置了一个环境变量并打印欢迎消息,内容如下:

代码语言:javascript
复制
#!/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

下面看看分别进入 myenv1 和 myenv2 目录时环境的变化。

代码语言:javascript
复制
[kongxx@bdmaster test]$ cd myenv1
direnv: loading .envrc
##################################################
#               Welcome to myenv1                #
##################################################
direnv: export +myenv
[kongxx@bdmaster myenv1]$ env | grep myenv
DIRENV_DIR=-/home/kongxx/test/myenv1
PWD=/home/kongxx/test/myenv1
myenv=myenv1

[kongxx@bdmaster test]$ cd myenv2
direnv: loading .envrc
##################################################
#               Welcome to myenv2                #
##################################################
direnv: export +myenv
[kongxx@bdmaster myenv2]$ env | grep myenv
DIRENV_DIR=-/home/kongxx/test/myenv2
PWD=/home/kongxx/test/myenv2
myenv=myenv2
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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