シェルスクリプトで環境変数を読み込む

経緯

シェルスクリプトから .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 したものを変数に代入すると改行等の絡みで上手く動かなかったので逐一読み込み直しというあまりやりたくない方法で対応しています。

可能であればもう少しスマートにしたいところですが……。

参考

(未使用) 1行ごとに読み込んでループ

sed

正規表現

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。