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