LoginSignup
808

More than 3 years have passed since last update.

direnvを使おう

Last updated at Posted at 2014-01-04

direnvとは?

ディレクトリ毎に環境変数を定義して、そのディレクトリがカレントになった時だけ環境変数を有効/無効にしてくれるツール。開発中のアプリ毎に環境変数を変えたい時に重宝する。

リポジトリはこちら
https://github.com/direnv/direnv

direnvは今話題のgoで作成されているみたいですね。

インストール方法

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

Mac上でHomebrewを利用しているのであれば、brew install direnv でいいです。

shellにhookを追加する

bash
~/.bashrc
export EDITOR=お使いのエディタ
eval "$(direnv hook bash)"
zsh
~/.zshrc
export EDITOR=お使いのエディタ
eval "$(direnv hook zsh)"
fish
~/.config/fish/config.fish
set -x EDITOR お使いのエディタ
eval (direnv hook fish)

使い方

環境変数を設定したいディレクトリにcdし、

direnv edit .

すると、カレントディレクトリに .envrc が作成され、下記のように設定した環境変数が追記/削除されます。

# ここで設定したTESTはカレントディレクトリ配下のみ有効にできる
export TEST=test

# 上位フォルダで設定した環境変数の削除(unset)もできる
unset ABC

.envrcbash で評価される点は注意してください。(fishを使っててもbashの記法で環境変数を指定します)

例えばカレントの"bin"をPATHに追加したいのであれば、下記のように環境変数を宣言しましょう。

.envrc
export PATH=bin:$PATH

または、ショートカットで指定できます。

.envrc
PATH_add bin

自動的に環境変数が読み込まれます。

direnvにはその他便利な関数が定義されています。詳しくは direnv stdlib を見てみてください。

エラーが発生する場合

direnv: error .envrc is blocked. Run `direnv allow` to approve its content. というエラーが発生する場合は(エラーメッセージにある通り)以下のコマンドを実行してください。

direnv allow

注意: .envrcをリポジトリにコミットしないように注意しましょう

このファイルをリポジトリに追加し、githubにpushしてしまうと環境変数に設定したパスワード等が漏れてしまいます。こちらのQiitaを参考にシステム全体で.envrcをコミットできないよう、gitignoreを設定するか.gitignore.envrcを追加する、また、git-secretsを設定しておくことをオススメします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
808