环境自动加载工具direnv

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

下载安装

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

$ 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,所以运行下面的命令。

$ eval "$(direnv hook bash)"

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

使用

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

在 myenv1 目录下创建 .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"

在 myenv2 目录下创建 .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"

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

direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

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

direnv allow

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

[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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,942评论 0 5
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,324评论 0 5
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 10,788评论 0 9
  • (一)基本命令 命令格式: 命令 参数 1.ls 显示文件名,等同于dos下dir命令 命令格式:ls [opti...
    飞羽孟德阅读 5,985评论 0 3
  • 八月十五这天早起 ,我去早市买菜,一进市场门口,就看见驼背弯腰的刘治穹,杵着拐棍倚在门口,两只眼睛眯着,咧着嘴,露...
    玥美洋洋阅读 3,655评论 0 5