direnvを使おう


direnvとは?

ディレクトリ毎に環境変数を定義して、そのディレクトリがカレントになった時だけ環境変数を有効/無効にしてくれるツール。開発中のアプリ毎に環境変数を変えたい時に重宝する。

リポジトリはこちら

https://github.com/direnv/direnv

direnvは今話題のgoで作成されているみたいですね。


インストール方法

git clone https://github.com/direnv/direnv

cd direnv
sudo make install

Mac上でHomebrewを利用しているのであれば、brew install direnv でいいです。


shellにhookを追加する


zsh


~/.zshrc

export EDITOR=お使いのエディタ

eval "$(direnv hook zsh)"


使い方

環境変数を設定したいディレクトリにcdし、


zsh

direnv edit .


すると、カレントディレクトリに.envrcが作成され、下記のように設定した環境変数が追記/削除されます。

# ここで設定したTESTはカレントディレクトリ配下のみ有効にできる

export TEST=test

# 上位フォルダで設定した環境変数の削除(unset)もできる
unset ABC

例えばカレントの"bin"をPATHに追加したいのであれば、下記のように環境変数を宣言しましょう。


.envrc

export PATH=bin:$PATH


または、ショートカットで指定できます。


.envrc

PATH_add bin


自動的に環境変数が読み込まれます。


エラーが発生する場合

direnv: error .envrc is blocked. Run `direnv allow` to approve its content. というエラーが発生する場合は(エラーメッセージにある通り)以下のコマンドを実行してください。

direnv allow


注意: .envrcをリポジトリにコミットしないように注意しましょう

このファイルをリポジトリに追加し、githubにpushしてしまうと環境変数に設定したパスワード等が漏れてしまいます。こちらのQiitaを参考にシステム全体で.envrcをコミットできないよう、gitignoreを設定するか.gitignore.envrcを追加する、また、git-secretsを設定しておくことをオススメします。