A ótima solução do @ icarus funciona para funções, desde que sejam definidas literalmente e não o resultado de um evalconteúdo de outro arquivo (no qual o arquivo com o evalserá exibido como fonte). Ele não imprimirá o arquivo de origem de aliases, embutidos do shell (como echo) e executáveis (binários ou não), e acredito que essas informações não estejam disponíveis em geral. Alguns comandos podem imprimir seus arquivos de origem (e podem até ser verdadeiros), no decorrer da execução normal ou em resposta a um sinal.
__git_ps1é definido em /usr/share/git/git-prompt.she /usr/share/git/completion/git-prompt.shno meu sistema, Arch Linux, por isso pode ser o mesmo para você.
Dê uma olhada na seção Invocação , man bashcaso deseje procurar comandos originados especificamente no início do shell - eles podem originar outros arquivos que, por sua vez, originam outros arquivos.
$PATH,typenão funcionará. Você pode tentar apenas usarfindoulocate.locateserá muito mais rápido, pois usa um banco de dados pré-existente, mas não funcionará se o comando foi instalado recentemente.