diff --git a/bashrc b/bashrc index 12e374e..5a5cedd 100755 --- a/bashrc +++ b/bashrc @@ -216,25 +216,29 @@ cd(){ if test $# -eq 0 then pushd ~/ >/dev/null + elif ! test -d "$1" + then + echo `basename ${SHELL}`: cd: "$1": No such file or directory 2>&1 + return 1 elif test $1 = - then local pwd="$PWD" popd >/dev/null pushd -n "$pwd" >/dev/null # stack last dir else - pushd "$@" >/dev/null + pushd "$1" >/dev/null fi } pushd(){ - local pwd="$PWD" - for l in $(\dirs -v -l | \grep "^ [0-9]\+ *${pwd}$" | cut -d " " -f 2 | tac) + local next="$(realpath "$1")" + for l in $(\dirs -v -l | \grep "^ [0-9]\+ *${next}$" | cut -d " " -f 2 | tac) do echo $l test $l -eq 0 && continue popd +$l -n done - command pushd "$@" >/dev/null + command pushd "$1" >/dev/null } input(){