> I suspect that the case-esac structure is a neglected control structure. indeed. and combined to the neglected alternative syntax (man zshmisc) (probably inspired by rc, as well as the neglected rcquote option), you have: pd () case $+1 { (0) popd ;; (*) pushd "$1" ;; }