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は、環境の切り替えが簡単にできるので便利です。
是非使い方を覚えて、便利に効率的にプログラミングを学習していきましょう!
コメント