brew: always eval brew shellenv to keep env vars current even if brew is on PATH; update README

This commit is contained in:
Divyaranjan Sahoo 2025-09-17 12:54:00 +05:30
commit f653c54441
2 changed files with 15 additions and 9 deletions

View file

@ -10,12 +10,17 @@ plugins=(... brew)
## Shellenv
If `brew` is not found in the PATH, this plugin will attempt to find it in common locations, and execute
`brew shellenv` to set the environment appropriately. This plugin will also export
`HOMEBREW_PREFIX="$(brew --prefix)"` if not previously defined for convenience.
This plugin evaluates Homebrew's shell environment on load to ensure `PATH`, `MANPATH`, `INFOPATH`, and other
Homebrew variables are up to date:
In case you installed `brew` in a non-common location, you can still set `BREW_LOCATION` variable pointing to
the `brew` binary before sourcing `oh-my-zsh.sh` and it'll set up the environment.
```zsh
eval "$(brew shellenv)"
```
If `brew` is not already on `PATH`, the plugin will attempt to find it in common locations and run
`brew shellenv` from there. You can also set a `BREW_LOCATION` variable pointing to the `brew` binary before
loading Oh My Zsh to override detection. This plugin will also export `HOMEBREW_PREFIX="$(brew --prefix)"`
if not previously defined for convenience.
## Aliases

View file

@ -1,4 +1,7 @@
if (( ! $+commands[brew] )); then
if (( $+commands[brew] )); then
# Brew is already on PATH; still evaluate shellenv to ensure env vars are current
eval "$(brew shellenv)"
else
if [[ -n "$BREW_LOCATION" ]]; then
if [[ ! -x "$BREW_LOCATION" ]]; then
echo "[oh-my-zsh] $BREW_LOCATION is not executable"
@ -16,9 +19,7 @@ if (( ! $+commands[brew] )); then
return
fi
# Only add Homebrew installation to PATH, MANPATH, and INFOPATH if brew is
# not already on the path, to prevent duplicate entries. This aligns with
# the behavior of the brew installer.sh post-install steps.
# Evaluate Homebrew shell environment from discovered brew binary
eval "$("$BREW_LOCATION" shellenv)"
unset BREW_LOCATION
fi