В bash (и во всех других оболочках с автозаполнением, насколько я знаю), когда вы начинаете вводить имя команды и нажимаете клавишу Tab, оболочка будет искать в каталогах в $PATH
и возвращать команды, чье имя начинается с тем, что вы напечатали. Таким образом, вы можете запустить команду, не находясь в том же каталоге, где находится этот конкретный исполняемый файл. Это делает вашу жизнь намного проще.
Если вас интересуют только исполняемые файлы в текущем каталоге, просто добавьте ./
в начало введенного вами имени. ./
означает текущий каталог (по крайней мере, в системах * nix, я не уверен, что они изменили формат при портировании на windows), поэтому bash
попытается развернуть имена файлов в текущем каталоге:
$ ls
foo.pl
$ foo <TAB> ## lists many possible completions
$ ./foo <TAB> ## only lists foo.pl