Нет, команда "mode" не "исчезает", и вы все равно можете вызывать ее как «mode.com».
Что происходит, так это то, что Cygwin-версия bash добавляет «.exe» к возможно исполняемому имени в приглашении, когда выполняет цикл поиска файлов в каталогах PATH.
Однако классический Windows cmd.exe добавляет и «.exe», и «.com» (тоже «.bat» и «.cmd») в тот же процесс.
C:\Windows\System32>where mode
C:\Windows\System32\mode.com
Чтобы ответить на второй вопрос, я посмотрел путь cygwin к mode.com в Windows:
$ which mode.com
/cygdrive/c/Windows/system32/mode.com
и получил список исполняемых файлов * .com в том же каталоге.
$ ls -l /cygdrive/c/Windows/system32/*.com
Наблюдая за результатами, мы можем сказать, что по крайней мере следующие команды "исчезают" в bash: chcp.com, diskcomp.com, diskcopy.com, format.com, mode.com, more.com, tree.com.
ОБНОВЛЕНИЕ 05-03-2014, 16:45 GMT+0100: Принимая во внимание, что CMD.EXE автоматически завершает все файлы в PATH с расширением из списка PATHEXT, bash автоматически завершает все файлы в PATH, которые являются исполняемыми, независимо от их расширения.
Если я наберу 'forma' и нажму TAB, он автоматически заполняется до 'format.com'. Однако, если я наберу 'mode' и нажму клавишу TAB один раз, будет издан только звуковой сигнал; если я нажимаю TAB еще раз, появляется выбор между mode.com и modemui.dll. После небольшого тестирования, я думаю, что есть ошибка с завершением Cygwin bash, которая приводит к тому, что при первом нажатии TAB издается звуковой сигнал, а не выводится выбор. Это не зависит от расширения.
Другая проблема заключается в том, что я могу набрать 'notepad' или 'notepad.exe', и cygwin выясняет, что он должен выполнить /cygdrive/c/Windows/system32/notepad.exe. В то же время, если я хочу выполнить «foobar.bat» или «foobar.com», мне нужно предоставить расширение. Похоже, что Cygwin имеет специальную обработку суффикса '.exe', который действительно имеет место (см. Функцию Maybe_suffix и массив stat_suffixes ). Более того, похоже, что «.bat», «.com» и «.cmd» были специально удалены в spawn.cc версии 1.214 и не были добавлены в более недавнем обновлении.
Не стесняйтесь спрашивать о первой проблеме в списке рассылки cygwin, а также о второй проблеме в cygwin-developers. Я на самом деле не вовлечен в Cygwin, но вы можете внести свой вклад в это! :-) Также, чтобы исправить мой ответ на ваш первоначальный вопрос: все исполняемые файлы Windows с расширениями из списка PATHEXT, кроме.EXE исчезают:
C:\Windows\System32>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC