set +o posix hash -r unalias -a # this should echo nothing type # this should be a usage error type -r ${THIS_SH} # these should behave identically type notthere command -v notthere alias m=more unset -f func 2>/dev/null func() { echo this is func; } type -t func type -t while type -t builtin type -t /bin/sh type -t ${THIS_SH} type -t mv type func # the following two should produce identical output type while type -a while type builtin type /bin/sh command -v func command -V func command -v while command -V while # the following two lines should produce the same output # post-3.0 patch makes command -v silent, as posix specifies # first test with alias expansion off (should all fail or produce no output) type -t m type m command -v m alias -p alias m # then test with alias expansion on shopt -s expand_aliases type m type -t m command -v m alias -p alias m command -V m shopt -u expand_aliases command -v builtin command -V builtin command -v /bin/sh command -V /bin/sh unset -f func type func unalias m type m hash -r hash -p /bin/sh sh type -p sh SHBASE=${THIS_SH##*/} hash -p /tmp/$SHBASE $SHBASE type -p $SHBASE type $SHBASE type -t $SHBASE # make sure the hash table looks right hash