Allow brew shellenv to accept a shell name param
Resolves #15358 With this change, `brew shellenv` will accept a shell name parameter to override its default output (based on `/bin/ps`) for advanced use cases such as with dotfile templating and caching with [twpayne/chezmoi](https://github.com/twpayne/chezmoi/discussions/2971). When running under `fish`, this is the output: ```console $ brew shellenv pwsh [System.Environment]::SetEnvironmentVariable('HOMEBREW_PREFIX','/opt/homebrew',[System.EnvironmentVariableTarget]::Process) [System.Environment]::SetEnvironmentVariable('HOMEBREW_CELLAR','/opt/homebrew/Cellar',[System.EnvironmentVariableTarget]::Process) [System.Environment]::SetEnvironmentVariable('HOMEBREW_REPOSITORY','/opt/homebrew',[System.EnvironmentVariableTarget]::Process) [System.Environment]::SetEnvironmentVariable('PATH',$('/opt/homebrew/bin:/opt/homebrew/sbin:'+$ENV:PATH),[System.EnvironmentVariableTarget]::Process) [System.Environment]::SetEnvironmentVariable('MANPATH',$('/opt/homebrew/share/man'+$(if(${ENV:MANPATH}){':'+${ENV:MANPATH}})+':'),[System.EnvironmentVariableTarget]::Process) [System.Environment]::SetEnvironmentVariable('INFOPATH',$('/opt/homebrew/share/info'+$(if(${ENV:INFOPATH}){':'+${ENV:INFOPATH}})),[System.EnvironmentVariableTarget]::Process) $ brew shellenv set -gx HOMEBREW_PREFIX "/opt/homebrew"; set -gx HOMEBREW_CELLAR "/opt/homebrew/Cellar"; set -gx HOMEBREW_REPOSITORY "/opt/homebrew"; set -q PATH; or set PATH ''; set -gx PATH "/opt/homebrew/bin" "/opt/homebrew/sbin" $PATH; set -q MANPATH; or set MANPATH ''; set -gx MANPATH "/opt/homebrew/share/man" $MANPATH; set -q INFOPATH; or set INFOPATH ''; set -gx INFOPATH "/opt/homebrew/share/info" $INFOPATH; ``` The specific case presented in the mentioned discussion could be mitigated by an additional level of indirection (`{{ output "fish" "-c" "'brew shellenv'" | trim }}`), that requires that the running system have the target shells installed, when they are not strictly necessary with `brew shellenv`.
This commit is contained in:
parent
54adebb1de
commit
8719946036
@ -81,7 +81,7 @@ case "$*" in
|
|||||||
;;
|
;;
|
||||||
shellenv)
|
shellenv)
|
||||||
source "${HOMEBREW_LIBRARY}/Homebrew/cmd/shellenv.sh"
|
source "${HOMEBREW_LIBRARY}/Homebrew/cmd/shellenv.sh"
|
||||||
homebrew-shellenv
|
homebrew-shellenv "$1"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
formulae)
|
formulae)
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#: * `shellenv`
|
#: * `shellenv [bash|csh|fish|pwsh|sh|tcsh|zsh]`
|
||||||
#:
|
#:
|
||||||
#: Print export statements. When run in a shell, this installation of Homebrew will be added to your `PATH`, `MANPATH`, and `INFOPATH`.
|
#: Print export statements. When run in a shell, this installation of Homebrew will be added to your `PATH`, `MANPATH`, and `INFOPATH`.
|
||||||
#:
|
#:
|
||||||
@ -6,6 +6,8 @@
|
|||||||
#: To help guarantee idempotence, this command produces no output when Homebrew's `bin` and `sbin` directories are first and second
|
#: To help guarantee idempotence, this command produces no output when Homebrew's `bin` and `sbin` directories are first and second
|
||||||
#: respectively in your `PATH`. Consider adding evaluation of this command's output to your dotfiles (e.g. `~/.profile`,
|
#: respectively in your `PATH`. Consider adding evaluation of this command's output to your dotfiles (e.g. `~/.profile`,
|
||||||
#: `~/.bash_profile`, or `~/.zprofile`) with: `eval "$(brew shellenv)"`
|
#: `~/.bash_profile`, or `~/.zprofile`) with: `eval "$(brew shellenv)"`
|
||||||
|
#:
|
||||||
|
#: The shell can be specified explicitly with a supported shell name parameter. Unknown shells will output POSIX exports.
|
||||||
|
|
||||||
# HOMEBREW_CELLAR and HOMEBREW_PREFIX are set by extend/ENV/super.rb
|
# HOMEBREW_CELLAR and HOMEBREW_PREFIX are set by extend/ENV/super.rb
|
||||||
# HOMEBREW_REPOSITORY is set by bin/brew
|
# HOMEBREW_REPOSITORY is set by bin/brew
|
||||||
@ -18,7 +20,14 @@ homebrew-shellenv() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$(/bin/ps -p "${PPID}" -c -o comm=)" in
|
if [[ -n "$1" ]]
|
||||||
|
then
|
||||||
|
HOMEBREW_SHELL_NAME="$1"
|
||||||
|
else
|
||||||
|
HOMEBREW_SHELL_NAME="$(/bin/ps -p "${PPID}" -c -o comm=)}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${HOMEBREW_SHELL_NAME}" in
|
||||||
fish | -fish)
|
fish | -fish)
|
||||||
echo "set -gx HOMEBREW_PREFIX \"${HOMEBREW_PREFIX}\";"
|
echo "set -gx HOMEBREW_PREFIX \"${HOMEBREW_PREFIX}\";"
|
||||||
echo "set -gx HOMEBREW_CELLAR \"${HOMEBREW_CELLAR}\";"
|
echo "set -gx HOMEBREW_CELLAR \"${HOMEBREW_CELLAR}\";"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user