Macで環境変数を管理するためのdirenvの設定方法

個人的にはThinkPadを使ってUbuntuで開発を行っていたのもあり、Macにはあまり慣れていませんでした。

Pythonで主に開発を行なっている自分ではありますが、環境変数の管理には主にpython-dotenvというのを使用しています。

今回はMac上で環境変数を管理するためのツールであるdirenvの設定方法についてまとめてみました。

direnvとは

direnvはMacで環境変数を管理できるツールです。

bashを使っていた場合は、環境変数は主に.bash_profileや.bashrcに設定すると思いますが、開発するアプリ毎に環境変数を変えたい場合では不便です。direnvはディレクトリ毎に環境変数を定義できて、.envrcに環境変数を適用します。.envrcがあるディレクトリがカレントディレクトリになった時に環境変数が有効になります。

まずはdirenvをインストールします。brewでインストールが可能です。

$ brew install direnv

次に~/.bashrcの下記に以下を追加してください。

# ~/.bashrc

eval "$(direnv hook bash)"

~/.bashrcの再読み込みしてdirenvを動作するようにします。

$ source ~/.bashrc

direnvの設定

次に開発を行うディレクトリ上に.envrcファイルを作成します。.envrcに環境変数を記述します。

$ touch .envrc

以下のように環境変数を記述していきます。例としてPostgreSQLの環境変数を定義する際などを記述しています。

export POSTGRES_HOST=db
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=postgres

direnvの有効化

.envrcファイルがある場所で以下のコマンドを叩いてください。以下のコマンドでdirenvが有効化されます。$ direnv allow .

$ direnv allow .
direnv: loading .envrc

.envrcがあるディレクトリから抜けると、以下が表示されてdirenvが一時無効化されます。

$ cd ..
direnv: unloading

再度、.envrcがあるディレクトリに入ると以下のように表示され、.envrcの内容が環境変数に追加されていることがわかります。

$ cd project/
direnv: loading .envrc

$ printenv|grep POST
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_HOST=db

.envrcの運用について

当然ですが、.envrcにはSECRET_KEYやアクセストークンnadono悪用されてはまずいような情報も書き込む可能性もあるため、GitHubにリポジトリとしてあげる際には.gitignoreに.envrcを入れておくことをオススメします。

//.gitignore
.envrc

ほとんどの場合は環境変数の値部分を抜いた雛形となる.envrc.sampleなどのファイルを用意して、実際に適用する際は.envrcにコピーして値を書き込んで有効化することがほとんだと思います。

$ touch .envrc.sample

.envrc.sampleの内容を以下のように書き込みます。

// .envrc.sample
export POSTGRES_HOST=
export POSTGRES_USER=
export POSTGRES_PASSWORD=

.envrcを使用する際は、以下のようにコピーして値を書き込んでから有効化します。

$ cp .envrc.sample .envrc

# 以下で編集を行う
$ vim .envrc

$ cat .envrc
export POSTGRES_PASSWORD=postgres
export POSTGRES_USER=postgres
export POSTGRES_HOST=db

# 有効化
$ direnv allow .

参考資料


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

1

shimakaze_soft

Pythonのバックエンドエンジニア、たまにインフラなどもやる。最近はブロックチェーン系技術にハマっており、機械学習とGo言語なども勉強中。LaravelでWEBサービスを友人と個人開発しています。 https://qiita.com/shimakaze_soft
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。