Чудове рішення @ icarus працює для функцій, якщо вони визначені буквально, а не є результатом evalвмісту іншого файлу (у якому файл із evalзаповітом відображатиметься як джерело). Він не буде друкувати вихідний файл псевдонімів, вбудованих оболонок (як echo) та виконуваних файлів (двійкових чи ні), і я вважаю, що ця інформація взагалі недоступна. Деякі команди можуть надрукувати вихідні файли (і навіть можуть бути правдивими щодо цього), або під час звичайного виконання, або у відповідь на сигнал.
__git_ps1визначено в /usr/share/git/git-prompt.shі /usr/share/git/completion/git-prompt.shв моїй системі Arch Linux, тому це може бути для вас однаковим.
Перегляньте розділ " Виклик ", man bashякщо ви хочете шукати команди, спеціально отримані на початку оболонки - вони можуть джерело інших файлів, які, в свою чергу, створюють інші файли.
$PATH, вінtypeне працюватиме. Ви можете спробувати просто використовуватиfindабоlocate.locateбуде набагато швидше, оскільки він використовує попередньо існуючу базу даних, але вона не працюватиме, якщо команда була встановлена зовсім недавно.