すこぶる.net

技術系備忘録など

Linux

【direnv】ディレクトリごとに環境変数を管理する

投稿日:2018年9月20日 更新日:

direnv を使うメリット

ディレクトリごとに環境変数を変えたい場合があります。
例えば、複数のプロジェクト(サービス)を管理しているときなどです。

もう少し具体的にいうと、 Terraform などで管理している別々の AWS アカウントがあったとします。

このとき、それぞれを実行する IAMキー が共通であれば問題はないのですが、普通は別になっていると思います。
ローカルから Terraform を実行するとして、それぞれ IAMキーを切り替えるには 「~/.aws/config, ~/.aws/credentials」などで調整はできますが少々面倒です。

そんなとき direnv があると便利です。

direnv を使う

direnv は go で実装されています。 ( リポジトリ: https://github.com/zimbatm/direnv )

  1. Mac を使用しているなら brew でインストールできます
  2. 次に 「~/.zshrc」に以下を追加します。※ お使いのシェル、エディタに合わせてください。

    変更後は「source ~/.zshrc」で再読込してください。
  3. 次に環境変数を切り替えたい場所で以下を実行し、環境変数を記載します
  4. 確認します

    「.envrc」というファイルが作成され、環境変数が読まれているのが分かると思います。直接ファイルを修正することも可能です。
    このファイルがあるディレクトリ配下に影響があるということも確かめてみます。(上位のディレクトリに移動すると環境変数がアンセットされます)

まとめ

以上で direnv の使い方の紹介は終わりです。
環境変数の扱いにはいろんなソリューションがあると思いますが、 direnv はその一つとして検討してもよい便利で簡単に使用できるツールだと思います。
多くの場面で活躍するものだと思うのでぜひ試してみてください。

補足

vim などで修正してコメント文などを入れた場合など以下のようなエラーが出ると思います。
問題がなければ指示通り direnv allow コマンドを実行して問題ありません。

 

-Linux
-,

執筆者:

関連記事

Linuxでパッケージアップデート後に再起動が必要なプロセスを確認する方法

概要 Linuxでパッケージをアップデートしたあとにプロセスを再起動しないといかないものがあります。 例えば、openssl をアップデートしたあとは、Apache のプロセスを再起動するということが …

Firewalldで特定IPからの接続に制限する

概要 CentOS7 や Ubuntu を使用している場合、Firewalld を使用する方が多いと思います。 iptables に慣れている方は最初設定の簡単さや逆にうまくいかない設定があったりと戸 …

curlコマンドで接続時間を確認する方法

概要 Linux を使用している場合、Webサーバへの接続確認に curl コマンドを使用すること場面が多いと思います。 そんなときに、名前解決にかかる時間、サーバとの接続にかかる時間を確認する方法を …

htpasswdコマンドでベーシック認証のパスワードを8文字以上に設定する方法

概要 htpasswdコマンドを使用してベーシック認証のパスワードを8文字以上で作成する際には注意が必要です。

普通に8文字のパスワー …