Help us understand the problem. What is going on with this article?

direnvを使おう

More than 1 year has passed since last update.

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を設定しておくことをオススメします。

freee
スモールビジネスのバックオフィス業務をテクノロジーで自動化し、日本のスモールビジネスを元気にする
http://www.freee.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away