Завершение табуляции для аргументов команды не работает в Cygwin из-за суффикса `.exe`

Возможно ли, что в Cygwin есть опция конфигурации, так что, когда Bash завершает имя команды, расширение .exe файла filename не включено?


При использовании завершения вкладки в Bash в системе Cygwin для завершения имени команды расширение .exe добавляется к имени команды, например, ввод opens и нажатие Tab завершает команду openssl.exe .

Команда работает нормально (с MS Windows расширение .exe является необязательным при запуске команды), но проблема в том, что _openssl() завершения _openssl() предоставляемая пакетом bash-completion настроена только для обеспечения завершения аргументов для openssl – not 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 прежде чем я начну вводить аргументы для этой команды. В идеале я бы не хотел этого делать каждый раз, когда я запускаю команду.


Я полагал, что, вероятно, это невозможно без изменения исходного кода библиотеки Cygwin DLL или завершения команды Bash ( pcomplete.c ). Тем не менее, я замечаю, что встроенные Bash, type и command автоматически .exe суффикс .exe от имен исполняемых файлов, например,

 $ type -a openssl openssl is /usr/bin/openssl $ command -v openssl /usr/bin/openssl 

Кажется, что у Bash, работающего в Cygwin, есть механизм для предоставления имени команды (без расширения .exe ). В любом случае, альтернативные предложения приветствуются.

    One Solution collect form web for “Завершение табуляции для аргументов команды не работает в Cygwin из-за суффикса `.exe`”

    Оказывается, в Cygwin есть опция конфигурации, которая настраивает Bash, чтобы не включать расширение .exe имени файла, когда оно завершает имя команды.

    Включение параметра complete_strip_exe (определенного для порта Cygwin Bash) делает то, что я хочу:

     shopt -s completion_strip_exe 

    Эта функция не очень задокументирована: она содержит краткое упоминание в разделе «Расширение пути » на странице руководства Cygwin для Bash (она не включена в исходный исходный код, поэтому не документируется на официальной странице руководства или документации для Bash ). Я столкнулся с этим во время просмотра /usr/share/doc/Cygwin/bash.README (через 4 месяца после запроса этого вопроса):

    7b. Используя 'shopt -s completion_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» -suffixed. При этом, контакт заканчивается на «ping».

    Большое спасибо Дэну Коласионе (я только что отправил ему личное письмо, чтобы лично поблагодарить его) за эту функцию и сопровождающих Баша за предоставление такой прекрасной оболочки.

    Interesting Posts

    Как лучше всего клонировать запущенную систему на новый жесткий диск с помощью rsync?

    Требования к минимальной автономной графической карте для двух мониторов

    Как изменить цвет по умолчанию командной строки?

    Как запустить 32-разрядное приложение в недавнем 64-битном Ubuntu

    Отключить перенос строк в Gedit

    Как увидеть настройки компьютера Windows, когда панель задач недоступна

    Блокирование доступа только к сайту Facebook, а не к другим и / или кнопкам на других страницах

    Что удерживает мой компьютер от сна?

    Недавно посещаемые каталоги?

    Lost Mac DVD, как я могу получить новую копию диска?

    Chrome Incognito: Сделать браузер по умолчанию

    Схема раздела и размер для двойной загрузки Windows 7 и Ubuntu 9.10 с отдельными разделами для данных и / home

    Отключение функциональных клавиш в Windows 8 с помощью Autohotkey

    Как регистрировать процессы в течение рабочего дня?

    Использование Vim / Gvim с несколькими окнами графического интерфейса пользователя

    Давайте будем гением компьютера.