Der Fehler hier ist sehr einfach zu verstehen: mintty
Leiten Sie Ihre Programme nicht an (vermutlich) weiter cmd
, wo die Ausgabeumleitung eingerichtet ist. Stattdessen wird die Ausgabe in einem eigenen GUI-Fenster angezeigt. Das ist es, wofür ein Terminal-Emulator entwickelt wurde. :)
Die Ausgabeumleitung ist eine Shell-Funktion. Wenn Sie nur laufen mintty my_command
, verwenden Sie überhaupt keine Shell. Stattdessen wird mintty
direkt gestartet my_command
.
Wenn Sie zitieren "my_command 2>out.err"
, fordern Sie mintty
nach einem Befehl für diesen (vollständigen) Namen. Es ist gleichbedeutend mit der Eingabe "my_command 2>out.err"
in eine reguläre Linux-Shell. Funktioniert nicht so oder so.
Nun, da wir festgestellt haben, dass es sich um eine Shell-Funktion handelt, ist es klar, dass wir eine Shell brauchen. Eine übliche Wahl wäre Bash. Bash kann eine Befehlszeichenfolge übergeben werden, die beim Start wie folgt ausgeführt wird:
bash -c "my_command 2>out.err"
Das bedeutet, dass wir es so verwenden können mit mintty
:
mintty /bin/bash -c "my_command 2>out.err"
Auf diesem Computer erbt die auf diese Weise gestartete Cygwin Bash-Shell das Arbeitsverzeichnis, in dem ich bin cmd
.