最近在多個項目之間來回切換,其中不同項目需要使用同一個庫的不同版本,來回切換太麻煩,于是乎靶溜,想到了曾經有同事給我建議的環(huán)境自動加載工具direnv,可以使我在命令行中根據(jù)進入的目錄不同懒震,自動加載不同的環(huán)境配置罩息。下面就看看怎么使用吧。
下載安裝
可以從 https://github.com/direnv/direnv 下載自己操作系統(tǒng)的包个扰。
$ 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)"
到這里娘香,就算安裝完成了,下面看看怎么使用吧办龄。
使用
這里我們創(chuàng)建兩個目錄茅主,分別叫 myenv1 和 myenv2,然后我們測試分別進入不同目錄時自動切換環(huán)境土榴。
在 myenv1 目錄下創(chuàng)建 .envrc 文件诀姚,其中設置了一個環(huán)境變量并打印歡迎消息,內容如下:
#!/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 目錄下創(chuàng)建 .envrc 文件玷禽,其中設置了一個環(huán)境變量并打印歡迎消息赫段,內容如下:
#!/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 目錄時環(huán)境的變化。
[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