Macにdirenvを導入する

業務では1案件だけに集中することはなく、複数案件を切り替えながら作業することもあります.
そういう時に「ディレクトリを切り替えたら環境変数も切り替わると便利だな」と思う時がありますよね.

もし、そう思うのであれば今すぐdirenvをインストールして使いましょう.

direnvのインストール

Homebrewを使っている人はbrew installするだけでOKです.

brew install direnv

Homebrew以外でのインストール方法は、READMEのInstallを参考に実行してください.

設定

READMEのSetupを見て自分が利用しているシェルに合わせた設定を行ってください. 私はzshを利用しているため、以下のコードを.zshrcに追記します.

# direnvがインストールされている場合のみ実行
if [ "$(command -v direnv)" != "" ]; then
    eval "$(direnv hook zsh)"
fi

また direnv editを実行し、各ディレクトリに環境変数を定義する際にEDITORに設定されているエディタが起動するため、.zshenv.zshrcなどにEDITORを定義する.

export EDITOR=$(where vim)

特定ディレクトリ配下でのみ有効な環境変数を設定する

direnvを利用して環境変数を定義するにはdirenv edit .を実行し、エディタで.envrcファイルを編集します.
今回はAWS_PROFILEを設定してみます.

export AWS_PROFILE=production

編集が終わり保存し終えたらdirenv allow .を実行することで、
そのディレクトリ配下のみで.envrcに定義された環境変数を参照することができます.

おまけ

Gitの除外設定

作成される.envrcファイルには場合によってはクレデンシャル情報や、その人固有の情報が設定されることがあるため、
リポジトリの.gitignoreやグローバルのignoreファイルに定義しておくことを推奨します.

# .gitignore
.envrc

特定ディレクトリをPATHに追加する

.envrcを定義しているディレクトリにbinディレクトリがあり、それをPATHに追加したい時はたまにあります.
そういった時はPATH_addを利用するのが良いです.

# .envrc
PATH_add bin

こう定義することで、このディレクトリ配下ではPATHに.envrcと同じ階層のbinディレクトリが追加されます.