Nein, der Befehl 'mode' verschwindet nicht und Sie können ihn weiterhin als 'mode.com' aufrufen.
Was passiert ist, dass die Cygwin-Version von bash ".exe" an einen möglicherweise ausführbaren Namen in der Eingabeaufforderung anhängt, wenn nach Dateien in den PATH-Verzeichnissen gesucht wird.
Allerdings das klassische Windows cmd.exe Fügt im selben Prozess sowohl ".exe" als auch ".com" (auch ".bat" und ".cmd") hinzu.
C:\Windows\System32>where mode
C:\Windows\System32\mode.com
Um die zweite Frage zu beantworten, habe ich den Cygwin-Pfad zu mode.com von Windows nachgeschlagen:
$ which mode.com
/cygdrive/c/Windows/system32/mode.com
und erhielt eine Liste von * .com ausführbaren Dateien im selben Verzeichnis.
$ ls -l /cygdrive/c/Windows/system32/*.com
Wenn wir die Ergebnisse betrachten, können wir sagen, dass mindestens die folgenden Befehle in bash "verschwinden": chcp.com, diskcomp.com, diskcopy.com, format.com, mode.com, more.com, tree.com.
UPDATE 05.03.2014 16:45 GMT + 0100 : Während CMD.EXE alle Dateien in PATH mit einer Erweiterung aus der PATHEXT-Liste automatisch vervollständigt, vervollständigt bash automatisch alle Dateien in PATH, die unabhängig von ihrer Erweiterung ausführbar sind.
Wenn ich 'forma' eintippe und die Tabulatortaste drücke, wird es korrekt automatisch zu 'format.com' vervollständigt. Wenn ich jedoch 'mode' eingebe und einmal die Tabulatortaste drücke, wird nur ein Piepton ausgegeben. Wenn ich erneut die Tabulatortaste drücke, wird eine Auswahl zwischen "mode.com" und "modemui.dll" angezeigt. Nach einigen weiteren Tests gibt es meines Erachtens einen Fehler mit der Cygwin-Bash-Vervollständigung, der dazu führt, dass beim ersten Drücken der Tabulatortaste ein Piepton ausgegeben wird, anstatt eine Auswahl zu drucken. Dies ist unabhängig von der Erweiterung.
Ein weiteres Problem ist, dass ich entweder 'notepad' oder 'notepad.exe' eingeben kann und cygwin herausfindet, dass /cygdrive/c/Windows/system32/notepad.exe ausgeführt werden muss. Wenn ich 'foobar.bat' oder 'foobar.com' ausführen möchte, muss ich gleichzeitig eine Erweiterung bereitstellen. Es scheint, dass Cygwin eine spezielle Behandlung für das Suffix '.exe' hat, was in der Tat der Fall ist (siehe vielleicht_suffix Funktion und stat_suffixes Array). Außerdem sieht es so aus, als ob '.bat', '.com' und '.cmd' absichtlich in entfernt wurden spawn.cc version 1.214 und wurden nicht wieder in hinzugefügt ein neueres Update .
Fragen Sie nach dem ersten Problem in der Cygwin-Mailingliste und nach dem zweiten Problem in der Cygwin-Entwicklerliste. Ich bin selbst nicht wirklich in Cygwin involviert, aber so können Sie dazu beitragen! :-) Außerdem, um meine Antwort auf Ihre erste Frage zu korrigieren: Alle ausführbaren Windows-Dateien mit Erweiterungen aus der PATHEXT-Liste mit Ausnahme von .EXE verschwinden:
C:\Windows\System32>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
TAB
Drücken von erzeugt einen Piepton, wenn mehr als eine Option in jeder mir bekannten Linux-Shell vorhanden ist. Das ist völlig normal. Ich denke nicht, dass das ein Fehler sein sollte. Die Auswahl wird erst nach einer Sekunde auf dem Bildschirm ausgedrucktTAB
drücken.