Snippets

yujiorama 便利スクリプト【元ネタは https://songmu.jp/riji/entry/2019-06-14-bash-dotenv.html 】

Created by Yuji Okazawa
#!/bin/bash
#
# 元ネタ
# おそらくはそれさえも平凡な日々 > bashでdotenvファイルを環境変数に読み出す
# https://songmu.jp/riji/entry/2019-06-14-bash-dotenv.html
#

#
# Usage
#
# 何も指定しないパターン
# $ 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
#

dotenv() {
    original_env="$(declare -x)"
    
    ### dotenv like
    DOTENV="${DOTENV:-${PWD}/.env}"
    
    if [[ -e "${DOTENV}" ]]; then
        set -o allexport
        # shellcheck disable=SC1090
        source "${DOTENV}"
        set +o allexport
    fi
    
    eval "${original_env}"
    
    exec "$@"
}

if [[ "dotenv" == "$(basename $0 .sh)" ]]; then
	dotenv "$@"
fi

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.