direnv で環境変数を管理する方法をご紹介します。
direnv の類似ライブラリとして dotenv 系ライブラリがあります。
*dotenv は環境変数を読み込むためにソースコードから明示的に Dotenv.load を呼ぶ必要があります。
direnv はソースコードにわざわざ Dotenv.load を明記しなくてよく、ディレクトリに移動してきたタイミングで自動で有効化してくれるという点がメリットだと考えています。
また、Node.js や Ruby などのプログラミング言語によって *dotenv 系のライブラリを使い分ける必要もなくなる点もメリットです。ちなみに direnv は Go 製です。
macOS なら Homebrew でインストールするのが楽です。
brew install direnv
Setup を参考に自分の shell へ hook を追加しましょう。
zsh の場合
自分は zsh を利用しているので zsh の場合を紹介します。
~/.zshrc ファイルに以下のコードを追加するだけで OK です。
eval "$(direnv hook zsh)"
上記追記後に忘れずに source ~/.zshrc もしくは Terminal を開き直しましょう。
direnv edit .
.envrc ファイルに以下のように load したい環境変数を export で記述します。
# .envrc
export AWS_DEFAULT_REGION=ap-northeast-1
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
$ cd /path/to/envrc/dir
direnv: loading .envrc
direnv: export +AWS_ACCESS_KEY_ID +AWS_DEFAULT_REGION +AWS_SECRET_ACCESS_KEY
direnv: error .envrc is blocked. Run direnv allow
to approve its content. というエラーメッセージが表示されたら、エラーメッセージに記載されている通り direnv allow を実行しましょう。
direnv を設定したディレクトリ以下から移動すると、自動で環境変数が unload されます。
$ cd ../
direnv: unloading
以上、direnv で環境変数を管理していきたい、現場からお送りしました。