Apenas parte de uma resposta, mas para zsh , type
faz exatamente o que você precisa.
Exemplo:
$ type extract
extract is a shell function from /usr/share/oh-my-zsh//plugins/extract/extract.plugin.zsh
Você pode canalizar sua saída para sed "s/.*is a shell function from //g"
para obter apenas o caminho (isso pode ter alguns problemas, mas deve funcionar para a maior parte da saída).