Step 3, "I do what I need to do" is going to be a lot slower than a simple execution of the shell, unless you're using Korn shell with an enormous ENV file. ~/bin/dostuff: BASEDIR=${1:-`pwd`} for NEWDIR in `find ${BASEDIR} -type d -print` do cd ${NEWDIR} echo In \"${NEWDIR}\"\; Control-D to continue. ${SHELL:=/bin/sh} done