direnvコマンドを使用することで、terminalから特定ディレクトリに入ったときのみ環境変数を有効化することができます。
開発環境などで開発プロジェクト(ディレクトリ)ごとに変数の内容を書き換えたいときに便利です。
インストール
macOSの場合、brewコマンドからインストールできる。
brew install direnv
~/.zshrcにdirenvの有効化処理を追加
eval "$(direnv hook zsh)"
動作確認
設定ファイルを作る
mkdir work
echo "export BASE_URL=http://example.com/" > work/.envrc > work/.envrc
移動するとdirenv allow
の実行を促される
% cd work
direnv: error .../work/.envrc is blocked. Run `direnv allow` to approve its content
この時点ではまだ.envrcの機能は有効化されていない
% echo $BASE_URL
direnv allow
を実行すると、有効化される
% direnv allow
direnv: loading ~/work/.envrc
direnv: export +BASE_URL
% echo $BASE_URL
http://example.com/
ディレクトリを移動すると、環境変数がなくなる。(再度workディレクトリの中に入ると有効化される)
% cd ..
direnv: unloading
% echo $BASE_URL
内容を変更すると再度allowし直す必要がある。
% echo "export BASE_URL2=http://example.com/2" >> work/.envrc
% cd work
direnv: error .../work/.envrc is blocked. Run `direnv allow` to approve its content
こちらもおススメ
One thought on “[mac]zshでdirenvを使用する”