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で確認。
インストール
- 1macOS
brew install direnv。 - 2Linux
sudo apt install direnvなど。 - 3hook
eval "$(direnv hook zsh)"を~/.zshrcに。 - 4fish
direnv hook fish | source。
.envrc 基礎
export API_BASE=https://api.staging.example.com
PATH_add ./bin
dotenv_if_existsallow
cd ~/projects/my-app
direnv allow
echo $API_BASE自動 load/unload
cd ~/projects/my-app
cd ~
| 方式 | 読み込み | 退出時 |
|---|---|---|
source .env | 手動 | 残る |
| direnv | cd | 外れる |
- 向く
- 複数リポジトリ、PATH 切替。
- 向かない
- CI だけなら Dockerfile で十分。
.envrc を変えたのに反映されない?
direnv allow または direnv reload。
mise と競合?
併用可。各ツールの direnv 連携を参照。
Windows?
WSL で Linux 手順。ネイティブ PowerShell は限定的。