This seems right, the '-a' switch doesn't take wildcards: $ whence -a zsh /usr/local/bin/zsh /usr/bin/zsh /bin/zsh ... however the '-m' switch accepts wildcards: $ whence -m "zsh*" /usr/local/bin/zsh /usr/local/bin/zsh-ok /usr/local/bin/zsh-test1 /usr/local/bin/zsh-test2-orig-rebuild /bin/zsh4 /bin/zsh5 ... yet, although '/usr/local/bin/zsh' is found, all of the other files found by 'whence -a zsh' above are missed. How is it that '/usr/local/bin/zsh' matches 'zsh*' but '/bin/zsh' does not?