direnv のインストール:.envrc 基礎、direnv allow、環境変数の自動読み込み

direnv を入れ .envrc を allow し、ディレクトリ単位で env を載せ外しする。

リポジトリごとに API キーや DB URL、PATH 調整が必要なのに、毎回 .env を source するのは面倒です。direnv は .envrc を読み、cd で環境変数を載せ、出ると外します。本稿は macOS/Linux インストール、shell hook、.envrc 基礎、direnv allow、自動 load/unload を hereink 向けにまとめます。

検索語はdirenv のインストールと .envrc でプロジェクト環境変数を自動読み込み。direnv 導入、最初の .envrc、direnv allow、ディレクトリ出入りで変数の付け外しができれば OK です。

導入brew · apt
設定.envrc · allow
動作cd in · out

direnv が解くこと

ディレクトリ単位の環境

グローバル export は shell 全体を汚します。cd に合わせて載せ外し。

.env との併用

dotenv_if_exists で .env を読む。秘密は git に載せない。

公式:github.com/direnv/direnv、direnv.net。direnv version で確認。

インストール

  1. 1
    macOS

    brew install direnv。

  2. 2
    Linux

    sudo apt install direnv など。

  3. 3
    hook

    eval "$(direnv hook zsh)" を ~/.zshrc に。

  4. 4
    fish

    direnv hook fish | source。

.envrc 基礎

export API_BASE=https://api.staging.example.com
PATH_add ./bin
dotenv_if_exists

allow

cd ~/projects/my-app
direnv allow
echo $API_BASE

自動 load/unload

cd ~/projects/my-app
cd ~
方式読み込み退出時
source .env手動残る
direnvcd外れる
向く
複数リポジトリ、PATH 切替。
向かない
CI だけなら Dockerfile で十分。
.envrc を変えたのに反映されない?

direnv allow または direnv reload。

mise と競合?

併用可。各ツールの direnv 連携を参照。

Windows?

WSL で Linux 手順。ネイティブ PowerShell は限定的。

環境が揃ったら図で揃える

スペースの作り方。

今すぐ開始