direnv を用いたときに下位のディレクトリに環境変数をマージしていく方法と注意点

結論

source_up という一行を加えればいいです。

参考

公式ドキュメントに記述があります。また、Issue としても挙がっています

direnv.net

注意点

source_up を書く順番によって「マージ」か「ディープマージ」かが変わってきます。難しいルールではなく、「後から定義された値が上書きされる」というだけです。

例えば、以下のように2つの .envrc が配置されていたとします。

  1. /path/to/.envrc
  2. /path/to/foobar/.envrc

1. /path/to/.envrc の内容は次のとおりだとします。

export FOO=BAR

2. /path/to/foobar/.envrc は次のとおりだとします。

source_up
export HOGE=FUGA
export FOO=TOKYO

/path/to/foobar における環境変数はどうなるか

上記の場合には、/path/to/foobar においての環境変数は次のとおりとなります。

FOO=TOKYO
HOGE=FUGA

source_up を最後に読み込んだ場合の /path/to/foobar における環境変数はどうなるか

ここで source_up を最後に読み込むように /path/to/foobar/.envrc を以下のように修正したとします。

source_up
export HOGE=FUGA
export FOO=TOKYO

上記の場合には、/path/to/foobar においての環境変数は次のとおりとなります。

FOO=BAR
HOGE=FUGA

マージ時の結論

マージ時は「後から定義された値が上書きされる」ということになります。

Powered by はてなブログ