direnvの使い方をいつも忘れるからメモしておく

direnvの使い方をいつも忘れるので備忘録として書いておく。

direnvとは

特定のディレクトリに移動したときに設定ファイルに記載された環境変数を読み込んで有効化するツール。 とりあえず、まだインストールしてないのであればインストールするべし!便利なので!

インストール

Macの方はHomebrewで入れればいいと思います。

$ brew install direnv

上記以外でインストールする方はリポジトリのREADMEを読んでください。

github.com

使い方

特定のプロジェクトのディレクトリ配下で .envrc に環境変数を書き込む

$ echo "export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx" >> .envrc
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

$ echo "export AWS_SECRET_KEY_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx" >> .envrc
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

$ echo "export AWS_DEFAULT_REGION=ap-northeast-1" >> .envrc
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

.envrcの内容を許可する

このままだと .envrc はブロックされたままなので以下のコマンドで許可してあげる。

$ direnv allow .
direnv: loading .envrc
direnv: export +AWS_ACCESS_KEY_ID +AWS_DEFAULT_REGION +AWS_SECRET_ACCESS_KEY

これで、環境変数がロードされたはず。 ためしに、環境変数を出力してみよう。

$ echo $AWS_DEFAULT_REGION
ap-northeast-1

はい、ちゃんと出力されてます。

特定のディレクトリから抜けると環境変数もアンロードされる

今のディレクトリから一つ上の階層に移動してみよう。

$ cd ..
direnv: unloading

.envrcに書き込んだ環境変数がアンロードされました。 確認するために出力してみます。

$ echo $AWS_DEFAULT_REGION

はい、何も出力されなくなりました。

これでいちいち環境変数を読み込んだりする作業が楽になりますね!

注意

.envrc はGithub等にコミットするのはやめましょう。 リポジトリが公開されていると、AWSのシークレットキーなどが盗まれて悪用されちゃうので。