Оказывается, в Cygwin есть опция конфигурации, которая настраивает Bash так, чтобы он не включал .exe
расширение имени файла при завершении имени команды.
Включение completion_strip_exe
опции (специфичной для порта Cygwin Bash) делает то, что я хочу:
shopt -s completion_strip_exe
Эта функция явно не документирована: она упоминается в разделе «Расширение пути» справочной страницы Cygwin для Bash (она не включена в исходный исходный код, поэтому не документирована на официальной странице руководства или в документации по Bash ). Я сталкивался с этим, просматривая /usr/share/doc/Cygwin/bash.README
(приблизительно 4 месяца после того, как задал этот вопрос):
7b. использование 'shopt -s complete_strip_exe' делает суффиксы полосы завершения .exe.
Похоже, что эта опция была доступна в Cygwin Bash более 5 лет:
----- версия 4.1.9-1 - 2010-12-29 -----
Добавить исправления EXECIGNORE и complete_strip_exe от Dan Colascione.
Дальнейшие исследования показывают, что патч для этой функции был представлен Дэном Колассьоне еще в ноябре 2010 года со следующим описанием :
completion_strip_exe
это новая опция оболочки При включении bash пытается использовать короткое имя программы вместо ее более длинного с суффиксом «. Exe». С этим на контакте завершается "пинг".
Большое спасибо Дэну Колассионе (я только что отправил ему личное письмо, чтобы лично поблагодарить его) за эту функцию и сопровождающим Bash за предоставление такой замечательной оболочки.