direnvをbrew/ソースビルドで入れてbashにhookを仕込んでみた

  • direnv
  • Bash

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

何をしたか

direnvをmacとlinuxそれぞれで入れて、bashにhookを仕込んだ。ついでにdirenv edit .の挙動も確認した。

インストール

mac (Homebrew)

brew install direnv

Linux (ソースビルド)

git clone https://github.com/direnv/direnv
cd direnv
sudo make install

Goのツールチェーンが入ってないとmakeが通らない。事前にgoコマンドが使える状態にしておく必要がある。

bashへの設定

~/.bashrcに以下を追記する。

export EDITOR=/usr/bin/vim
eval "$(direnv hook bash)"

反映はsource ~/.bashrc。

使い方

対象のディレクトリに移動してdirenv edit .を叩く。

cd /path/to/your/target
direnv edit .

.envrcが無ければ作られて$EDITOR(今回はvim)で開く。保存して閉じると自動でdirenv allowされた状態になるらしい。ただしこの自動allowは.envrcのmtimeが変わった場合のみ発動する仕様で、CHANGELOGを見る限りv2.1.0(2013-11-10)より前から入っている挙動だった。2019/2/13時点の最新版はv2.19.1(2019/1/31リリース)だけど、当然この挙動になる。

既に他人が作った.envrcをpullしてきて中身を確認済みの場合は、direnv edit .ではなくdirenv allow .だけで許可する方が早い。信頼していないディレクトリの.envrcをそのままallowするのはリスクがあるので、中身は見てから許可した方がいい。