学习
实践
活动
专区
工具
TVP
写文章
专栏首页运维之美还在为多环境下项目管理的问题困扰吗,用上 direnv 后工作轻松乐无忧!

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

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

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

direnv 安装

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

  1. 通过二进制版本安装

这里以 Linux 平台为例:

$ 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,直接运行下面的命令即可。

eval "$(direnv hook bash)"

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

  • ZSH

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

eval "$(direnv hook zsh)"

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

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

direnv 使用

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

  1. 在 myenv1 目录下创建一个 .envrc 文件,并设置了一个环境变量并打印欢迎消息,内容如下:
$ 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 文件,并设置了一个环境变量并打印欢迎消息,内容如下:
$ 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"

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

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

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

$ direnv allow
  1. 下面看看分别进入 myenv1 和 myenv2 目录时环境变量的变化。
# 进行 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
文章分享自微信公众号:
运维之美

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

作者:Mike
原始发表时间:2020-04-14
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 全面的Docker快速入门教程

      都2021年了,你还在为了安装一个开发或者部署环境、软件而花费半天的时间吗?你还在解决开发环境能够正常访问,而发布测试环境无法正常访问的问题吗?你还在为持续...

    追逐时光者
  • 云原生世界中的隐形人如何拥抱 Istio

    身为一个企业服务部门的 IT 工人,在为甲方殚精竭虑的同时,经常有一种跟世界脱节的感觉:流量经济持续不断的冲刷之下,微服务、云原生等新的架构和概念如火如荼;大咖...

    崔秀龙
  • FL STUDIO 21 水果音乐制作软件fl V21Producer 制作人版多少钱

    FL STUDIO 21 水果音乐制作软件fl V21Producer 製作人版是一款活跃在音频编辑领域的软件,它的中文名为水果音乐制作软件,是能向用户提供全能...

    用户9208731
  • 100倍加速!深度学习训练神器Determined AI宣布开源!更快,更简单,更强大

    作为一名深度学习科研人员,小编我可是深受模型训练的困扰:一个模型要跑几天几夜,结果最后发现有一步错了 ...从头再来

    新智元
  • 一款适合IT团队的在线API文档、技术文档工具-showdoc介绍

    还在为word文档传来传去查阅不方便而烦恼吗,还在为查看数据库字段含义不方便而烦恼吗,还在为编写接口文档而烦恼吗?今天为大家推荐一款适合IT团队的在线A...

    小博测试成长之路
  • 如何做好任务管理?软件+方法+具体实操介绍

    “任务管理是企业的一个重要环节,一个任务计划好了,但是在执行过程中没有管理好,基本算是功亏一篑!”

    飞项
  • 现有「数据库架构」过时了 !

    作者:Avishai Ish-Shalom是ScyllaDB公司的开发者推广人员。

    CloudBest
  • 原生应用 “0” 代码改造,无侵入接入,纵享丝滑般上云体验!

    热衷于云原生和开源技术,在容器、Service Mesh、消息队列、区块链等领域拥有丰富经验,目前致力于Service Mesh 技术的落地和推广

    腾讯云中间件团队
  • vue开发工具有哪些,那个更合适?

    现在前端除了JavaScript外,还有react,vue,angular这三个框架在市场上用的比较多,可以说这三个框架很大程度上改变了前端的地位,相对于ang...

    北京锐智互动
  • 如何免费云端运行Python深度学习框架?

    想运行TuriCreate,却没有苹果电脑,也没有Linux使用经验,怎么办?用上这款云端应用,让你免安装Python运行环境。一分钱不用花,以高性能GPU,轻...

    王树义
  • 这些项目,入选了 2019 年最佳开源软件榜单!

    InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响力评选出当年...

    GitHubDaily
  • 什么才是java的基础知识?

    程序工场
  • 什么才是Java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的...

    顶级程序员
  • 什么才是Java的基础知识?

    Java学习123
  • 什么才是Java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的...

    Java团长
  • 你做的分析,业务早知道了,怎么办?【实操版】

    “你做的分析,业务早知道了,怎么办?”是一个非常困扰数据分析师的问题。面试的时候遇到,会越觉得非常难回答。工作中遇到,气的想拍桌子骂娘。今天我们系统的来讲解一下...

    接地气的陈老师
  • 升级打怪之路:中小企业的持续部署总结和避坑指南

    上一篇文章用了我2个晚上,今天把老早之前就想写的公司持续集成的总结和展望写了,算是给自己大脑一个交代——对自己说到做到。

    DevOps时代
  • 【容器7月报】原生节点全新面世,超级节点全量发布

    2022年7月 VOL:27 本月产品重要发布 TKE(腾讯云容器服务): 腾讯云容器服务(Tencent Kubernetes Engine ,...

    腾讯云原生
  • 遇见Python,是你最幸福的事

    老码农:龟叔是个不甘寂寞的人,随着团队越来越多的使用Python,龟叔决定将Python开源。

    小码匠

扫码关注腾讯云开发者

领取腾讯云代金券