direnvが適切に機能するためには、シェルにフックする必要があります。 それぞれのシェルには、独自の拡張の仕組みがあります。
フックが構成されたら、シェルを再起動するとdirenvが活性化します。
以下の行を~/.bashrcファイルの末尾に加えてください。
eval "$(direnv hook bash)"
必ず、rvm、git-promptやその他のプロンプトを操作するシェルの拡張より後にくるようにしてください。
以下の行を~/.zshrcファイルの末尾に加えてください。
eval "$(direnv hook zsh)"
Oh my zshにはdirenvの中核プラグインの対応が備わっています。
zshrcファイルでdirenvをプラグインの配列を加えてください。
plugins=(... direnv)
以下の行を~/.config/fish/config.fishファイルの末尾に加えてください。
direnv hook fish | source
Fishは3つのモードに対応しており、大域環境変数direnv_fish_modeで設定できます。
set -g direnv_fish_mode eval_on_arrow # プロンプト、及び矢印ベースのディレクトリの変更でdirenvを開始(既定)
set -g direnv_fish_mode eval_after_arrow # プロンプト、及び実行コマンド前の矢印ベースのディレクトリの変更でのみdirenvを開始
set -g direnv_fish_mode disable_arrow # プロンプトでのみdirenvを開始。元々の動作と似た機能性です
以下の行を~/.cshrcファイルの末尾に加えてください。
eval `direnv hook tcsh`
以下を実行してください。
~> mkdir -p ~/.config/elvish/lib
~> direnv hook elvish > ~/.config/elvish/lib/direnv.elv
そして、以下の行を~/.config/elvish/rc.elvファイルに加えてください。
use direnv
config.nuで以下のフックを$env.config.hooks.env_change.PWDリストを加えてください。
{ ||
if (which direnv | is-empty) {
return
}
direnv export json | from json | default {} | load-env
}
補足 Nushellの
nu_scriptsに従うことで、上記のフックを常に最新のバージョンで使えます。
以下の行を$PROFILEに加えてください。
Invoke-Expression "$(direnv hook pwsh)"
以下の行を~/.murex_profileに加えてください。
direnv hook murex -> source
この日本語訳の原文はSetupです。
本文書の使用許諾は原文に従います。 翻訳の著作情報は以下の通りです。
MIT licence - Copyright (C) 2026 @gemmaro