.envrcという文字列

みなさんこんにちは、Yuap Techの竹村です

これまで、複数のプログラムをつくることで、「ユーザー環境変数の管理がめんどくさい」、「複数のプロジェクトが~/.profileファイルを複雑にしてる」といった悩みを抱えていました。

複数のアプリを開発していると、アプリ毎に環境変数を管理するのが大変になってしまうのです。

しかし、環境変数を管理するツール、direnvを導入することで、環境変数の管理に悩むことがなくなりました。

そこで今回は、便利な環境変数の管理ツール、direnvについてご紹介したいと思います。

direnvとは?

direnvとは、ディレクトリ毎に環境変数を定義して、そのディレクトリにいるときだけ、環境変数を有効にしてくれるツールです。

これにより、~/.profileファイルを混乱させることなく、プロジェクト固有の環境変数が可能になります。

プログラム、アプリ毎に環境変数を変更したいとき、非常に役に立ちます。

direnv: https://github.com/zimbatm/direnv

インストール方法

Macユーザーの方は、brewコマンドで一発です。

$ brew install direnv

インストールが完了したら、direnvを自動で読み込むための設定として、「~/.bashrc」に設定を追記しておきます。

$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc

追記できたら、書き込んだ設定を反映させておきましょう。

source ~/.bashrc

これで設定が完了しました。

direnvの使い方

環境変数を設定したいアプリのディレクトリに移動して、「.envrc」ファイルを作成します。

サンプルとして、hogeディレクトリ下で.envrcファイルを作成します。

$ mkdir hoge
$ cd hoge
$ touch .envrc

※.envrcを作成・編集すると以下のようなエラーが出ることがあります。

direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

そのときはdirenv allowを実行しましょう。

$ direnv allow
>> direnv: loading .envrc

それでは、値がfugaの環境変数FUGAを設定してみます。.envrcで環境変数を設定しましょう。

$ echo export FUGA=fuga >> .envrc

環境変数を呼び出します。

$ echo $FUGA
>> fuga

fugaが呼び出されましたね!

親ディレクトリに戻るとどうなるか見てみましょう。

$ cd ../
>> direnv: unloading

親ディレクトリには.direnvファイルがなかったので、direnv:unloadingが出力されました。

この親ディレクトリから、環境変数$FUGA(呼び出せなかった場合に出力されるnoneを渡しています。)を呼び出してみます。

$ echo ${FUGA-none}
>> none

noneと出力されました。子ディレクトリにある環境変数$FUGAは呼び出せません。

この通り、ディレクトリ毎に環境変数がスイッチされています。

これは、アプリごとに異なる環境変数を設定したい。管理したいという場合、非常に便利ですね。

direnvの注意点

gitでバージョン管理をする場合など、.envrcをリポジトリにコミットしないように気をつけましょう。

このファイルgithubにpushしてしまうと環境変数に設定したパスワード等が漏れてしまうからです。

.gitignoreに.envrcを追加する、また、git-secretsを設定するようにしましょう。

PROFILE

はじめまして、大阪のWeb制作会社Yuapです。「Yuap(ユアプ)」とは英語で「あなたのプランナー」という、Your Plannerの頭文字をとった社名です。 ホームページ制作|Webシステム開発|Webコンサルティングなどの業務を通じて、みなさまの事業の成長に貢献できるようなプランナーになれるよう、日々チャレンジしております。

※お問い合わせ・お見積りは無料です。 IT|ホームページ|Webシステムのことならなんでもお気軽にご相談ください。お問い合わせはこちらから。