X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=.profile.d%2Faliases.sh;h=dbbf4f41c14e5ca1d01bd90cd992bfc4446c9e6f;hb=853a0c1f76ed7cb7e9bd6619b9e58b38cca1a1f0;hp=accde15f50b631b398679de2c03bebf42c42b5ee;hpb=9889577453147dc5eda3973d678c2650b12cde23;p=home.git diff --git a/.profile.d/aliases.sh b/.profile.d/aliases.sh index accde15..dbbf4f4 100644 --- a/.profile.d/aliases.sh +++ b/.profile.d/aliases.sh @@ -102,27 +102,34 @@ cd_history() { ;; esac fi + if command cd "$@" ; then pushd -n "${PWD}" >/dev/null - elif [[ $# -gt 1 ]] ; then - # The `cd` above should have shown an error message for us. - local arg first_arg="$1" - while [[ $# -gt 0 ]] ; do - arg="$1" - shift - if [[ -d ${arg} ]] ; then - if [[ $# -gt 0 ]] ; then - printf 'cd: remaining: %s\n' "$@" >&2 + else + local ret=$? + + if [[ $# -gt 1 ]] ; then + # The `cd` above should have shown an error message for us. + local arg first_arg="$1" + while [[ $# -gt 0 ]] ; do + arg="$1" + shift + if [[ -d ${arg} ]] ; then + if [[ $# -gt 0 ]] ; then + printf 'cd: remaining: %s\n' "$@" >&2 + fi + printf 'cd: entering: %s\n' "${arg}" >&2 + cd_history "${arg}" + return + else + printf 'cd: skipping: %s\n' "${arg}" >&2 fi - printf 'cd: entering: %s\n' "${arg}" >&2 - cd_history "${arg}" - return - else - printf 'cd: skipping: %s\n' "${arg}" >&2 - fi - done - # If we're still here, then we didn't cd anywhere. - echo "cd: cwd is unchanged!" >&2 + done + # If we're still here, then we didn't cd anywhere. + echo "cd: cwd is unchanged!" >&2 + fi + + return ${ret} fi } alias cd='cd_history'