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