export LC_ALL=C export LANG=C dirs -c # error -- nonexistant directory pushd /tmp/xxx-notthere # errors -- empty stack pushd popd # errors -- bad numeric arguments -- should not cause the script to exit pushd -m popd -m dirs -m dirs 7 MYDIR=$PWD unalias cd 2>/dev/null unalias -a command cd -P / command pwd -P # better be `/' case "$OLDPWD" in $MYDIR) echo ok ;; *) echo oops -- bad \$OLDPWD ;; esac pushd /usr echo $PWD $OLDPWD dirs echo ${DIRSTACK[@]} # this should not change the directory stack at all pushd -n +0 dirs popd pushd /usr pushd /etc dirs dirs -l dirs -v # two consecutive `pushd's should swap the top two stack elements, then # swap them back, leaving the stack intact pushd pushd pushd /tmp echo ${DIRSTACK[0]} ; dirs +0 echo ${DIRSTACK[2]} ; dirs +2 # these should be errors, but not affect the directory stack dirs +9; dirs -9 pushd +9 ; pushd -9 popd +9 ; popd -9 popd -n +2 dirs echo ${DIRSTACK[@]} pushd -n /usr echo $PWD dirs echo ${DIRSTACK[@]} builtin pwd DIRSTACK[1]=/bin dirs builtin pwd popd +2 builtin pwd -L pushd -1 dirs echo ${DIRSTACK[0]} dirs -c dirs # this is for the benefit of pure coverage cd $MYDIR