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