diff --git a/bin/brew b/bin/brew index edf2dded7f995..e5ad8403a7e58 100755 --- a/bin/brew +++ b/bin/brew @@ -7,6 +7,26 @@ if ! [[ -d "$PWD" ]]; then exit 1 fi +resolve_link() { + $(type -p greadlink readlink | head -1) "$1" +} + +abs_dirname() { + local cwd path + cwd="$(pwd)" + path="$1" + + while [ -n "$path" ]; do + cd "${path%/*}" || return + local name + name="${path##*/}" + path="$(resolve_link "$name" || true)" + done + + pwd + cd "$cwd" || return +} + quiet_cd() { cd "$@" >/dev/null || return } @@ -19,7 +39,7 @@ symlink_target_directory() { quiet_cd "$directory" && quiet_cd "$target_dirname" && pwd -P } -BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}/" && pwd -P)" +BREW_FILE_DIRECTORY="$(abs_dirname "$0")" HOMEBREW_BREW_FILE="${BREW_FILE_DIRECTORY%/}/${0##*/}" HOMEBREW_PREFIX="${HOMEBREW_BREW_FILE%/*/*}"