Macでdirenvをインストールする方法と使い方

Conda

Macでdirenvをインストールして使用する

ローカル環境では、本番環境などとは別に環境変数を使用したい場合がありますよね!

またローカルで直接、環境変数をセットしてしまうと、複数プロジェクトで同じ環境変数を使用している場合には被ってしまい使えません。

そんな時に便利なのが、今回紹介するdirenvです!

direnvでは各プロジェクトのディレクトリへ移動した時に、そのプロジェクト専用の環境変数が読み込まれるため、複数プロジェクトでも被ることがありません!

今回は、Macでdirenvをインストールする方法と使い方について紹介していきます!

direnvとは?

direnvとは、ディレクトリ毎に環境変数を設定することができるソフトウェアになります。

例えば、あるプロジェクトAでは、環境変数APP_URL=’http://localhost:3000’を使い、あるプロジェクトBでは、環境変数APP_URL=’http://localhost:4000’を使っているとします。

これを直接、~/.bashrcや~/.bash_profileなどに設定して実現しようとすると、それぞれのプロジェクトを使う前に環境変数を修正して対応する必要が出てきてかなり面倒ですよね!

そのような時に、direnvを便利に使用することができます!

direnvを使用することで、プロジェクトAのディレクトリ直下に入った時に、プロジェクトA専用の環境変数を読み込ませてプロジェクトBのディレクトリ直下に入った時に、プロジェクトB専用の環境変数を読み込ませるということが可能なのです!

また本記事は、Macでdirenvをインストールする方法と使い方を紹介していくので、Ubuntuでdirenvをインストールしたい!という方は、こちらの記事を参照してください!

direnvのGitHubレポジトリ

今回インストールするdirenvのGitHubレポジトリはこちらになります。

direnvインストール手順

direnvのインストール

Macはbrewでとても簡単にdirenvがインストールできちゃいます!

以下のコマンドを実行してください!

$ brew install direnv

PATHの追加

direnvのインストールが完了したら、コマンドとして使えるようにPATHへ追加していきましょう!

bashを使用している場合

まずviやvimなどで、~/.bashrcを開きましょう!

以下の記述を追加したら保存して完了です!

~/.bashrc または ~/.bash_profile

export EDITOR=vi
eval "$(direnv hook bash)"

zshを使用している場合

~/.zshrc または ~/.zprofile

export EDITOR=vi
eval "$(direnv hook zsh)"

fishを使用している場合

export EDITOR=vi
eval (direnv hook fish)

direnvの使い方

ここではdirenvの使い方を詳しく解説していきます!

  • 初回の使い方
  • 2回目以降の使い方

で使い方が異なるので、それぞれ解説していきます!

初回の使い方

まずは初回の使い方を解説していきます!

direnvをインストールした直後はこちらのやり方で進めてください!

環境変数を設定したいプロジェクト直下に.envrcがまだ作成されていない状態での手順なので、もし.envrcがある場合は、2回目以降の使い方を確認してください。

direnvを使用したいプロジェクト直下へ移動

まず環境変数を設定したいプロジェクト直下へ移動します!

% cd /path/to/project

.envrcを作成する

移動したプロジェクト直下で、以下のコマンドを打ちます。

コマンドを打つと、エディターが開くので環境変数を定義すれば、そのプロジェクト(そのディレクトリ)を使用中の時に専用の環境変数を使用することができます!

% direnv edit .

環境変数を定義する

エディターが開くので環境変数を定義します。

ここでは、環境変数TESTを定義しています!

.envrc

# 環境変数TESTを定義
export TEST='TEST'

環境変数が自動で読み込まれる

これでプロジェクト直下へ移動すると設定した環境変数が自動的に読み込まれるようになっています!

% cd /path/to/project

2回目以降の使い方

2回目以降は、そのプロジェクト(そのディレクトリ)へ移動した際に、環境変数が自動的に読み込まれます

.envrcを手動で修正した場合や、うまく読み込まれない場合は、以下のようなエラーが出力されることがあります。

direnv: error /Users/kou/Documents/git/sample/.envrc is blocked. Run `direnv allow` to approve its content

その場合は、以下のコマンドで許可をしてあげれば次回以降に問題なく使用することができるようになります!

% direnv allow

エラー対応系

direnv: $EDITOR not found.が表示された場合

エラー内容

direnvコマンドを使用した際に以下のようなエラーが表示された場合。

direnv: $EDITOR not found.

解決方法

  • 環境変数EDITORが設定されていない
  • 環境変数EDITORが正しく読み込まれていない

上記の要因の可能性が高いので、

  • bashを使用している場合 -> ~/.bashrc または ~/.bash_profile
  • zshを使用している場合 -> ~/.zshrc または ~/.zprofile

辺りを詳しくみて、正しく以下の環境変数EDITORが設定されているかを確認しましょう。

export EDITOR=vi

.envrc is blockedが表示された場合

.envrcを手動で修正した場合や、うまく読み込まれない場合は、以下のエラーが出力されることがあります!

direnv: error /Users/kou/Documents/git/sample/.envrc is blocked. Run `direnv allow` to approve its content

以下のコマンドで許可をしてあげれば解決します!

% direnv allow

他のツールと合わせて使用する

direnvでMinicondaの仮想環境を切り替えて使用する

direnvはインストールしたら、Minicondaなどの仮想環境と合わせて活用することもできます!

Minicondaでの環境を切り替える際に、direnvを使用すると便利です!

$ direnv edit .
--------
source activate my_env
--------

Minicondaについてはこちらの記事へ詳しく掲載しています!

condaコマンドの使い方を確認したい場合はこちらです!

conda環境がインポート、エクスポートできれば別の環境で実行するときに便利です。

以下の記事に方法をまとめておきました!

anyenvと合わせて活用する

環境変数はdirenvで管理し、PHPやRuby、GoやNodeなどのバージョンは、anyenvを使用して一括管理すると大変便利です!

anyenvは以下のように様々な言語のenvに対応しているので、言語のバージョンの管理には、anyenvを使用してみてください!

  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  jlenv
  luaenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv
  tfenv

anyenvのインストールや使い方はこちらの記事へまとめていますので、是非確認してみてください!

まとめ

いかがでしたでしょうか。

今回は、Macでdirenvをインストールする方法と使い方について書きました!

direnvは、環境の切り替えが簡単にできるので便利です。

是非使い方を覚えて、便利に効率的にプログラミングを学習していきましょう!

オススメの関連商品

Note一覧

コメント