No bash (e todos os outros shells que possuem auto-completamento até onde eu sei), quando você começa a digitar o nome de um comando e clica em Tab , o shell irá procurar pelos diretórios em o $PATH
e retorna os comandos cujo nome começa com o que você digitou. Dessa forma, você pode executar um comando sem precisar estar no mesmo diretório em que esse executável específico está localizado. Isso torna sua vida muito mais fácil.
Se você estiver interessado apenas em arquivos executáveis no diretório atual, basta adicionar um ./
ao início do nome digitado. ./
significa o diretório atual (pelo menos em sistemas * nix, não tenho certeza se eles alteraram o formato ao portar para o Windows), portanto bash
tentará expandir os nomes de arquivos no diretório atual:
$ ls
foo.pl
$ foo <TAB> ## lists many possible completions
$ ./foo <TAB> ## only lists foo.pl