はじめ
golangに限らないですが、
環境ごとに環境変数を切り替えたいときはまぁまぁありますよね。
そんなときのdirenvメモです。
mac x golang
な環境を前提に書きますが
direnv自体はlinuxでも他の言語や環境でも同じです。
アジェンダ
- direnvとは
- direnvのinstall&設定
- direnv使ってみる
- direnv: error .envrc is blocked. Run
direnv allow
to approve its content.なとき
1. direnvとは
まずはdirenvのリポジトリ
https://github.com/direnv/direnv
簡単にいうとプロジェクトやディレクトリごとに環境変数を勝手に切り替えてくれる君です。
公式から引用するとこんな感じ。
direnv is an environment switcher for the shell. It knows how to hook into bash, zsh, tcsh and fish shell to load or unload environment variables depending on the current directory. This allows project-specific environment variables without cluttering the “~/.profile” file.
使うとこんな事が可能になります。
* ディレクトリごとにGPATHを設定できる * ディレクトリへ移動すると自動的に設定される(出ると勝手に解除)
2. direnvのinstall&設定
使う前のinstall&設定。簡単です
# install $ brew update $ brew install direnv # shellに設定 $ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
3. direnv使ってみる
設定してみる
ここでは環境(ディレクトリ)ごとにGOPATHを切り替える
という例で書きますが、他の環境変数でも同じです。
# 移動 $ cd path/to/設定したいディレクトリ # .envrcを作成 $ direnv edit . ---- vi追記 ---- export GOPATH=$(pwd) ---------------
使い方
# direnvを設定したdir以外にいる前提 $ pwd path/to/direnv設定してないdir # 移動 $ cd path/to/設定したdir direnv: loading .envrc direnv: export ~GOPATH # 出てみる $ cd .. direnv: unloading
補足
direnv edit .
でエラー
direnv edit .
するとdirenv: $EDITOR not found
なエラーができるときは$EDITORを設定してやります
# 怒られる $ direnv edit . direnv: $EDITOR not found. # bashrcに設定&読み込み $ echo 'export EDITOR=vim' >> ~/.bashrc $ source ~/.bashrc # vimが開けばok $ direnv edit .
4. direnv: error .envrc is blocked. Run direnv allow
to approve its content.なとき
.envrc
を直接編集すると以下のようなエラーが出るときがあります。
編集後は安全のためにdirenv allow
で明示的に読み込むまでは無効になっているよ、という事らしいです。
# 何かしたらこれがでる direnv: error .envrc is blocked. Run `direnv allow` to approve its content. # 素直に打つ $ direnv allow
参考
終わり
いまさら direnv の解説という記事を参考にさせてもらって
さらに今さら感がありますが自分用メモ>\(^o^)/