还在为多环境下项目管理的问题困扰吗,用上 direnv 后工作轻松乐无忧!
公众号关注 「奇妙的 Linux 世界」
设为「星标」,每天带你玩转 Linux !
direnv
是一个强大的环境变量管理工具,可以帮助我们简化环境变量管理。它可以根据当前目录自动加载或卸载环境变量,允许不同项目使用特定的环境变量。
项目地址:https://direnv.net/
direnv 安装
direnv
是基于 Go 语言开发,原生支持多平台,安装起来也是很简单的。
通过二进制版本安装
这里以 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 页面自行下载对应操作系统的文件。
配置以及集成 Shell
针对不同的 Shell 使用不同的 Hook 方式进行关联,这里我们说说最常用的两种 Bash 和 ZSH。
Bash
如果你使用的是 Bash,直接运行下面的命令即可。
eval "$(direnv hook bash)"
如果你想长期使用 direnv
,可以将以上命令加入到 ~/.bashrc
文件中。
ZSH
如果你使用的是 ZSH,直接运行下面的命令即可。
eval "$(direnv hook zsh)"
同样,如果你需要长期使用 direnv
,可以将以上命令加入到 ~/.zshrc
文件中。
到这里,安装就算完成了,下面我们看看怎么使用吧。
direnv 使用
这里我们创建两个目录,分别叫 myenv1 和 myenv2,然后我们测试分别进入不同目录时自动切换环境变量。
在 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"
同样也在 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
下面看看分别进入 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
的功能远不止这些,更多的高级功能如果你有兴趣可以自行发掘。
参考文档
https://www.google.com
https://www.cnblogs.com/rongfengliang/p/10730008.html
https://www.jianshu.com/p/efbc215f65ef
你可能还喜欢
点击下方图片即可阅读
你不可错过的 GitHub 万星技术面试宝典
点击上方图片,打开小程序,加入「玩转 Linux」圈子
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!
还在为多环境下项目管理的问题困扰吗,用上 direnv 后工作轻松乐无忧!相关推荐
- 在linux环境下com.aspose.words将word文件转为pdf后乱码,window环境下不会
在linux环境下com.aspose.words将word文件转为pdf后乱码,window环境下不会 乱码原因是因为在linux系统下没有中文字体,所以转换的时候乱码,需要我们手动把window系 ...
- 并发环境下的缓存容器性能优化(上):不可变的哈希表
我们在项目中经常会遇到这样的场景:一些信息读取开销较大,但只需要生成一次便可反复使用,因此我们会将其永久地缓存起来.例如在ASP.NET MVC中,系统会根据Controller的名称来缓存对应的元数 ...
- 在linux环境下 com.aspose.words将word文件转图片后乱码,window系统正常
乱码原因是因为在linux系统下没有中文字体,所以转换的时候乱码,需要我们手动把window系统的字体文件拷贝到linux系统下的字体目录下. 解决方法如下: (1)window系统的字体目录位置C: ...
- Windows7环境下用VirtualBox (5.1)上安装Ubuntu 17.10
VirtualBox下载地址如下: https://www.virtualbox.org/wiki/Downloads Ubuntu各个版本镜像下载地址如下: http://mirrors.melbo ...
- 北航计算机测试控制智能车,“车路协同环境下车辆群体智能控制理论与测试验证”项目顺利通过科技部中期检查...
2020年11月25日,科技部高技术研究发展中心"综合交通运输与智能交通"重点专项管理办公室组织专家在北京完成了对我校牵头的"车路协同环境下车辆群体智能控制理论与测试验证 ...
- nacos怎么修改服务分组_Nacos(六):多环境下如何“管理”及“隔离”配置和服务...
前言 前景回顾: 现如今,在微服务体系中,一个系统往往被拆分为多个服务,每个服务都有自己的配置文件,然后每个系统往往还会准备开发环境.测试环境.正式环境 我们来说算一算,假设某系统有10个微服务,那么 ...
- ICCV2019语义分割/UDA:ACE: Adapting to Changing Environments for Semantic SegmentationACE:适应变化环境下的语义分割
ACE: Adapting to Changing Environments for Semantic Segmentation ACE:适应变化环境下的语义分割 0.摘要 1.概述 2.相关工作 2 ...
- 如何在Linux环境下用虚拟机跑Windows!
文章目录 #0x0 Windows #0x1 安装虚拟机 #0x10 下载: #0x11 安装: #0x2 安装虚拟机windows #0x20 下载镜像 #0x21 安装镜像 #0x3 使用Wind ...
- 详解vue项目和普通项目如何解决开发环境与生产环境下的跨域问题
概念: 什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制.所谓同源是指,域名,协议,端口均相同. http://www ...
最新文章
- 操作系统--内存管理方式
- 物联网激荡MEMS传感器浪潮
- echart参数设置——曲线图
- 1.13 复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
- sort函数——利用函数实现快速排序c++
- my appointment Fiori customizing里的Calendar checkbox的实现逻辑
- get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...
- python 写入文件编码_使用Python写入文本文件时的编码问题
- cc1 transform链
- 技术总结之SpringIOC
- 人体存在感应雷达技术,车内生命体征检测,毫米波雷达探测模块
- 卡巴斯基离线病毒库升级办法
- 调戏木马病毒的正确姿势——上
- php 字符串压缩,PHP 压缩字符串的几种方法
- 银河麒麟安装Redis 6.0.3
- 泊松回归模型matlab,matlab拟合泊松分布
- onenote打开闪退平板_oppo r11s安装Onenote后打开会闪退怎么弄?
- linux dkms,DKMS简介
- 介绍一款rar文件密码破解利器——RAR Password Unlocker
- 麒麟安全IPO过会:拟募资6.6亿 第一季营收下降40%
热门文章
- lodop指定打印机打印_LODOP指定window默认打印机和临时默认打印机
- 中兴新支点操作系统信创全栈国产化解决方案
- crazy的比较级最高级_英语小问题:crazy比较级是crazier还是more crazy?
- Mac的uTorrent在Catalina不能用——替代品transmission/qBittorrent安装和使用方法
- 波峰焊 php,选择性波峰焊焊与普通波峰焊的区别
- Metasploit工具学习(二)
- h5 先加载小图_交互基础:加载的10种类型和应用场景分析
- 北京大学信科2017机试之鸡蛋的硬度
- 简述配置php运行环境的大致步骤,简述手工安装、配置PHP运行环境的大致步骤。...
- 本地对弈五子棋(以命名管道进行通信)