bash で dotenv

元ネタ

songmu.jp

実装

こんな感じのスクリプト$PATH において .bashrc から source しておくと、関数やファイルのどちらでも実行できるようになった。

bitbucket.org

使用例

何も指定しないパターン。差分なし

$ diff <(bash -c "env | sort") <(dotenv.sh bash -c "env | sort")

環境変数 AAA を .env に定義するパターン。追加した分だけが差分に出てる

$ echo AAA=BBB > .env
$ diff <(bash -c "env | sort") <(dotenv.sh bash -c "env | sort")
2a3
> AAA=BBB

環境変数 DOTENV に現在のディレクトリの .env を指定するパターン。

$ diff <(bash -c "env | sort") <(DOTENV=${PWD}/.env dotenv.sh bash -c "env | sort")
2a3
> AAA=BBB
41a43
> DOTENV=/c/Users/y_okazawa/tmp/.env

関数呼び出しなパターン。SHLVL が変化するのは仕方なし

$ diff <(bash -c "env|sort") <(AAA=BBB dotenv bash -c "env|sort")
2a3
> AAA=BBB
145c146
< SHLVL=2
---
> SHLVL=1