direnv使い始め

direnv

direnvとは

  • cdのようなシェルスクリプトをフックとしてディレクトリごとに環境変数を自動で設定してくれるツール
  • ディレクトリをぬけ出すと環境変数はリセットされる

インストールとセットアップ

brewを使ってインストール:

$ brew install direnv
$ brew link direnv

あるいはdirenvはGoで書かれているので、Goとmakeを使って:

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

インストール後、フックを追加:

echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc
echo 'eval (direnv hook fish)' >> ~/.config/fish/config.fish
echo 'eval `direnv hook tcsh`' >> ~/.cshrc

もし、~/.bash_profileが存在しない場合は、以下の内容で新しく~/.bash_profileを作成、あるいは追加:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

使用例

  • .envrcファイルでディレクトリ固有の環境変数を指定
  • direnv edit .コマンドでそのディレクトリの.envrcファイルを作成

使用する前に環境変数EDITORを設定しておく。

export EDITOR={エディタ}

ターゲットのディレクトリに.envrcファイルを作成:

$ mkdir test
$ cd test
$ echo ${FOO-nope} //環境変数FOOは存在しないのでnopeを返す
nope
$ direnv edit .

.envrcを編集する:

export FOO=foo

リロード:

$ direnv reload
direnv: loading ~/.direnvrc
direnv: loading .envrc
direnv: export +FOO

環境変数が設定されているか、確認:

$ echo ${FOO-nope}
foo

ディレクトリを抜けだしてみる:

$ cd ..
direnv: unloading
$ echo ${FOO-nope}
nope