経緯
シェルスクリプトから .env を読み込みたくなったのでその方法をメモ。
方法
今回は動けば良いくらいなノリだったので愚直に行いました。 .env
の書き方もダブルクォーテーションの有無くらいで、そこまで逸脱するケースは考えていません。
.env
HOGE=foobar
FUGA="LoremIpsum"
シェルスクリプト
HOGE=$(cat "/PATH/TO/DIRECTORY/.env" | sed -rn 's/^HOGE=["'\'']?([^"'\'']*)["'\'']?$/\1/p')
FUGA=$(cat "/PATH/TO/DIRECTORY/.env" | sed -rn 's/^FUGA=["'\'']?([^"'\'']*)["'\'']?$/\1/p')
echo $HOGE
# foobar
echo $FUGA
# LoremIpsum
今回はこれで動作を満たしたのでOKとしました。
なお、一度 cat
したものを変数に代入すると改行等の絡みで上手く動かなかったので逐一読み込み直しというあまりやりたくない方法で対応しています。
可能であればもう少しスマートにしたいところですが……。
参考
- Bash で dotnev ファイルを読み込んで複雑な環境変数を sed でパースする – Qiita
- dotenv を Bash と Zsh でやる – Qiita
- 安直に .env ファイルを export しないで欲しい