;;
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'