Есть ли в Cygwin параметр конфигурации, чтобы при завершении Bash имени команды суффикс имени файла .exe игнорировался (не включался)?
Объяснение проблемы
Когда для завершения имени команды используется завершение табуляции в Bash в системе Cygwin, к имени команды добавляется расширение .exe , например, ввод текста opens и нажатие клавиши Tab завершает команду для openssl.exe .
Команда работает нормально (в MS Windows расширение .exe является необязательным при выполнении команды), но проблема в том, что функция завершения _openssl() предоставляемая пакетом bash-completion complete, настроена только на предоставление завершений аргументов для openssl - не openssl.exe . Например:
$ complete -p openssl openssl.exe
complete -o default -F _openssl openssl
bash: complete: openssl.exe: no completion specification
Та же проблема существует при попытке завершить аргументы для всех исполняемых команд.
В настоящее время я использую Bash с режимом Emacs, настроенным для редактирования Readline, поэтому я могу нажать клавишу Esc, а затем два нажатия клавиши Backspace, чтобы удалить суффикс .exe прежде чем я начну вводить аргументы команды. В идеале я бы хотел избежать необходимости делать это каждый раз, когда запускаю команду.
Что я пробовал / исследовал
Я подумал, что это, вероятно, невозможно без изменения исходного кода DLL-библиотеки Cygwin или завершения команды Bash (pcomplete.c). Тем не менее, я заметил, что встроенные команды Bash, type и command автоматически удаляют суффикс .exe из имен исполняемых файлов, например:
$ type -a openssl
openssl is /usr/bin/openssl
$ command -v openssl
/usr/bin/openssl
Похоже, что Bash, работающий в Cygwin, имеет некоторый механизм для предоставления простого имени команды (без расширения .exe ). Тем не менее, я был в недоумении относительно того, как - или если - это может быть использовано, чтобы опустить расширение файла при выполнении команд.
