bundle/commands/exec: adjust environment variable handling (again)

We need to ensure that we keep around some `HOMEBREW_` variables so that
the e.g. `git` shim still works in `brew bundle exec`.
This commit is contained in:
Mike McQuaid 2025-04-10 16:16:05 +01:00
parent 1fb3bf8a14
commit 1a1aac9715
No known key found for this signature in database

View File

@ -111,16 +111,16 @@ module Homebrew
# For commands which aren't either absolute or relative # For commands which aren't either absolute or relative
raise "command was not found in your PATH: #{command}" if command.exclude?("/") && which(command).nil? raise "command was not found in your PATH: #{command}" if command.exclude?("/") && which(command).nil?
# Don't need to export Homebrew internal variables that won't be used by other tools.
# Those Homebrew needs have already been set to global constants and/or are exported again later.
# Setting these globally can interfere with nested Homebrew invocations/environments.
ENV.delete_if { |key, _| key.start_with?("HOMEBREW_", "PORTABLE_RUBY_") }
if subcommand == "env" if subcommand == "env"
ENV.sort.each do |key, value| ENV.sort.each do |key, value|
# No need to export empty values. # No need to export empty values.
next if value.blank? next if value.blank?
# Skip exporting Homebrew internal variables that won't be used by other tools.
# Those Homebrew needs have already been set to global constants and/or are exported again later.
# Setting these globally can interfere with nested Homebrew invocations/environments.
next if key.start_with?("HOMEBREW_", "PORTABLE_RUBY_")
# Skip exporting things that were the same in the old environment. # Skip exporting things that were the same in the old environment.
old_value = old_env[key] old_value = old_env[key]
next if old_value == value next if old_value == value