プロジェクト別に環境変数を自動切替!direnvの設定方法と使い方

direnvを使ったプロジェクトごとの環境変数自動切替設定方法を解説。インストールから基本的な使い方、便利な設定まで実践的に紹介します。

direnv環境変数プロジェクト自動切替設定2026/5/25

direnvとは?

direnvは、ディレクトリに応じて環境変数を自動で切り替えるツールです。プロジェクトごとに異なる環境変数(APIキー、データベースURLなど)を手動で設定・解除する手間を省き、安全に管理できます。シェルの拡張機能として動作し、ディレクトリ移動時に.envrcファイルを読み込みます。

インストール方法

macOS (Homebrew)

brew install direnv

Linux (apt)

sudo apt install direnv

その他のOS

公式サイト(https://direnv.net)からバイナリをダウンロードするか、パッケージマネージャでインストールしてください。

シェルへのフック設定

インストール後、シェルにフックを追加します。使用しているシェルに応じて以下の設定を.bashrc.zshrcに追記します。

Bash

eval "$(direnv hook bash)"

Zsh

eval "$(direnv hook zsh)"

Fish

direnv hook fish | source

設定後、シェルを再読み込みしてください。

source ~/.bashrc  # または ~/.zshrc

基本的な使い方

1. プロジェクトディレクトリに.envrcファイルを作成

プロジェクトのルートディレクトリに移動し、.envrcファイルを作成します。

cd /path/to/your/project
touch .envrc

2. 環境変数を記述

.envrcに設定したい環境変数をexportで記述します。

export DATABASE_URL="postgres://user:pass@localhost:5432/mydb"
export API_KEY="your-api-key-here"
export NODE_ENV="development"

3. ファイルを許可

初めて.envrcを作成した場合、direnvはセキュリティのため自動で読み込みません。以下のコマンドで許可します。

direnv allow

4. 動作確認

ディレクトリに移動すると、自動的に環境変数が設定されます。シェルに以下のようなメッセージが表示されます。

direnv: loading .envrc
direnv: export +DATABASE_URL +API_KEY +NODE_ENV

別のディレクトリに移動すると、自動的にunloadされます。

direnv: unloading

便利な設定例

複数行の値や特殊文字を含む場合

export SECRET="line1
line2"
export PATH="$PWD/bin:$PATH"

他のファイルから読み込む

source .env  # .envファイルを読み込み

条件分岐

if [ -n "$CI" ]; then
  export NODE_ENV="test"
fi

コマンドの実行結果を代入

export CURRENT_UID=$(id -u)

複数のプロジェクトで共通の設定を共有

共通設定を~/.config/direnv/lib/に置き、.envrcで読み込みます。
<h1>~/.config/direnv/lib/common.sh</h1>
export COMMON_VAR="value"
<h1>.envrc</h1>
source_env "$HOME/.config/direnv/lib/common.sh"
export PROJECT_SPECIFIC="value"

セキュリティに関する注意

  • .envrcはシェルスクリプトとして実行されるため、信頼できないソースからコピーしないでください。
  • direnv allowを実行する前に、ファイル内容を確認しましょう。
  • パスワードやAPIキーなどの機密情報は、バージョン管理に含めず、.envrc.gitignoreに追加することを推奨します。
  • トラブルシューティング

    環境変数が反映されない

  • シェルのフック設定が正しく行われているか確認。
  • .envrcの構文エラーがないかチェック。
  • direnv allowを実行したか確認。
  • 読み込み時にエラーが発生する

    direnv: error .envrc: line X: syntax error
    
    エラーメッセージに従って修正してください。

    特定のディレクトリでdirenvを無効にする

    .envrcの代わりに空の.envrcを作成し、direnv allowすると、そのディレクトリでは何も読み込まれません。

    まとめ

    direnvを使うことで、プロジェクトごとの環境変数管理が劇的に楽になります。インストールと設定は数分で完了し、日常の開発ワークフローに自然に溶け込みます。ぜひ導入して、手動での環境変数切り替えから解放されましょう。

    詳細は公式ドキュメント(https://direnv.net)を参照してください。