diff --git a/Library/Homebrew/utils/homebrew_vars.rb b/Library/Homebrew/utils/homebrew_vars.rb new file mode 100755 index 0000000000..057633b776 --- /dev/null +++ b/Library/Homebrew/utils/homebrew_vars.rb @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby + +ENV.keys.each do |key| + if key =~ /^HOMEBREW.*/ + # Remove any HOMEBREW.* vars containing white-space which causes a problem for "env -i" command via string. + # + # (Any user supplied HOMEBREW.* vars with valid white-space need to be hard-coded in 'bin/brew') + # + puts "#{key}=#{ENV[key]}" unless ENV[key].split(' ').length > 1 + end +end diff --git a/bin/brew b/bin/brew index b5fb9af047..710ef7e5c3 100755 --- a/bin/brew +++ b/bin/brew @@ -46,15 +46,22 @@ HOMEBREW_LIBRARY="$HOMEBREW_REPOSITORY/Library" if [[ -n "$HOMEBREW_ENV_FILTERING" ]] then - env -i \ - HOME="$HOME" \ + + homebrew_vars=$("$HOMEBREW_LIBRARY/Homebrew/utils/homebrew_vars.rb") + + cmd_str="/usr/bin/env -i \ + HOME=$HOME \ PATH=/usr/bin:/bin:/usr/sbin:/sbin \ - TERM="$TERM" \ - HOMEBREW_BREW_FILE="$HOMEBREW_BREW_FILE" \ - HOMEBREW_PREFIX="$HOMEBREW_PREFIX" \ - HOMEBREW_REPOSITORY="$HOMEBREW_REPOSITORY" \ - HOMEBREW_LIBRARY="$HOMEBREW_LIBRARY" \ - /bin/bash "$HOMEBREW_LIBRARY/Homebrew/brew.sh" "$@" + TERM=$TERM \ + HOMEBREW_BREW_FILE=$HOMEBREW_BREW_FILE \ + HOMEBREW_PREFIX=$HOMEBREW_PREFIX \ + HOMEBREW_REPOSITORY=$HOMEBREW_REPOSITORY \ + HOMEBREW_LIBRARY=$HOMEBREW_LIBRARY \ + $homebrew_vars \ + /bin/bash $HOMEBREW_LIBRARY/Homebrew/brew.sh $@" + + command $cmd_str + else source "$HOMEBREW_LIBRARY/Homebrew/brew.sh" fi