diff --git a/bin/brew b/bin/brew index ea08128845..5fb806e894 100755 --- a/bin/brew +++ b/bin/brew @@ -78,28 +78,30 @@ unset BREW_FILE_DIRECTORY HOMEBREW_LIBRARY="${HOMEBREW_REPOSITORY}/Library" # Load Homebrew's variable configuration files from disk. +export_homebrew_env_file() { + local env_file + + env_file="${1}" + [[ -r "${env_file}" ]] || return 0 + while read -r line + do + # only load HOMEBREW_* lines + [[ "${line}" = "HOMEBREW_"* ]] || continue + export "${line?}" + done <"${env_file}" +} + # First, load the system-wide configuration. -if [[ -f "/etc/homebrew/brew.env" ]] +unset SYSTEM_ENV_TAKES_PRIORITY +if [[ -n "${HOMEBREW_SYSTEM_ENV_TAKES_PRIORITY-}" ]] then - unset SYSTEM_ENV_TAKES_PRIORITY - # only load HOMEBREW_*=* lines - SYSTEM_HOMEBREW_ENV="$(grep -E '^HOMEBREW_[A-Z_]+=.*$' "/etc/homebrew/brew.env")" - if [[ -n "${HOMEBREW_SYSTEM_ENV_TAKES_PRIORITY-}" ]] - then - SYSTEM_ENV_TAKES_PRIORITY="1" - else - eval "${SYSTEM_HOMEBREW_ENV}" - fi + SYSTEM_ENV_TAKES_PRIORITY="1" +else + export_homebrew_env_file "/etc/homebrew/brew.env" fi # Next, load the prefix configuration -if [[ -f "${HOMEBREW_PREFIX}/etc/homebrew/brew.env" ]] -then - # only load HOMEBREW_*=* lines - PREFIX_HOMEBREW_ENV="$(grep -E '^HOMEBREW_[A-Z_]+=.*$' "${HOMEBREW_PREFIX}/etc/homebrew/brew.env")" - eval "${PREFIX_HOMEBREW_ENV}" - unset PREFIX_HOMEBREW_ENV -fi +export_homebrew_env_file "${HOMEBREW_PREFIX}/etc/homebrew/brew.env" # Finally, load the user configuration if [[ -n "${XDG_CONFIG_HOME-}" ]] @@ -129,20 +131,13 @@ else exit 1 fi -if [[ -f "${HOMEBREW_USER_CONFIG_HOME}/brew.env" ]] -then - # only load HOMEBREW_*=* lines - USER_HOMEBREW_ENV="$(grep -E '^HOMEBREW_[A-Z_]+=.*$' "${HOMEBREW_USER_CONFIG_HOME}/brew.env")" - eval "${USER_HOMEBREW_ENV}" - unset USER_HOMEBREW_ENV -fi +export_homebrew_env_file "${HOMEBREW_USER_CONFIG_HOME}/brew.env" # If the system configuration takes priority, load it last. if [[ -n "${SYSTEM_ENV_TAKES_PRIORITY-}" ]] then - eval "${SYSTEM_HOMEBREW_ENV}" + export_homebrew_env_file "/etc/homebrew/brew.env" fi -unset SYSTEM_HOMEBREW_ENV # Copy and export all HOMEBREW_* variables previously mentioned in # manpage or used elsewhere by Homebrew.