元ネタ
実装
こんな感じのスクリプトを $PATH
において .bashrc
から source
しておくと、関数やファイルのどちらでも実行できるようになった。
使用例
何も指定しないパターン。差分なし
$ 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