Alternative:
Die Umgebungsvariable PATH nehmen und alle darin angegebenen Verzeichnisse durchgehen. Dort dann jede Datei und jeden Link durchgehen und überprüfen, ob das eXecute-Bit gesetzt ist. Mehr macht Bash auch nicht. Alles was dir dann noch fehlt, sind einige built-in Befehle von Bash (oder welche Shell du auch nutzt). Falls du das machst, überprüfe vorher, in welcher Reihenfolge du durchgehst. Es kann mehrere Binaries mit dem selben Namen geben.
Die built-in Funktion "compgen -a" von Bash solltest du aber wenn möglich vorziehen.
Liebe Grüße,
Valentin