Startseite » wie man » Ausführen von Windows-Programmen über die Bash-Shell von Windows 10

    Ausführen von Windows-Programmen über die Bash-Shell von Windows 10

    Im Creators Update können Sie mit der Bash-Shell von Windows 10 jetzt Windows-Binärdateien und standardmäßige Befehlszeilenbefehle direkt von Bash aus ausführen. Sie können sowohl Linux- als auch Windows-Programme von derselben Bash-Shell aus ausführen oder sogar Windows-Befehle in ein Bash-Skript integrieren.

    Was du wissen musst

    Hier sind einige grundlegende Details, die Sie über diese Funktion wissen müssen:

    • Benutzerkonto: Programme, die von der Bash-Shell aus gestartet werden, werden so ausgeführt, als würden sie vom aktuellen Windows-Benutzerkonto gestartet.
    • BerechtigungenDiese Programme verfügen über die gleichen Berechtigungen wie der Prozess Bash.exe. Wenn Sie möchten, dass diese Befehle über Administratorzugriff verfügen, müssen Sie die Bash-Shell als Administrator ausführen.
    • Arbeitsverzeichnis: Windows-Programme verwenden dasselbe Arbeitsverzeichnis wie die Bash-Shell. Wenn Sie also einen Befehl ausführen, der den Inhalt des aktuellen Verzeichnisses auflistet, wird der Inhalt des aktuellen Arbeitsverzeichnisses in der Bash-Shell angezeigt. Verwenden Sie die CD Befehl zum Ändern von Arbeitsverzeichnissen.

    Lassen Sie uns aus diesem Grund einen Blick auf die Ausführung eines Programms werfen.

    So führen Sie ein Windows-Programm aus

    Geben Sie zum Ausführen eines Windows-Programms den Pfad zur EXE-Datei des Programms in der Bash-Shell ein. Denken Sie daran, dass Ihr Windows-Laufwerk C: unter / mnt / c in Bash verfügbar ist. In der Bash-Umgebung wird auch zwischen Groß- und Kleinschreibung unterschieden. Daher müssen Sie die korrekte Großschreibung angeben.

    Angenommen, Sie wollten das Ping-Dienstprogramm unter C: \ Windows \ System32 \ PING.EXE starten. Sie würden den folgenden Befehl ausführen:

    /mnt/c/Windows/System32/PING.EXE

    Der folgende Befehl würde nicht funktionieren, weil Bash die Groß- und Kleinschreibung berücksichtigt:

    /mnt/c/windows/system32/ping.exe

    Dies ist etwas komplizierter, wenn der Pfad komplexe Zeichen wie Leerzeichen und Klammern wie die Ordner "Programme" enthält. Leerzeichen, Klammern und andere komplexe Zeichen müssen durch ein vorangestelltes "\" -Zeichen "entkommen".

    Angenommen, Sie wollten das Internet Explorer-Programm ausführen, das sich unter C: \ Programme (x86) \ Internet Explorer \ iexplore.exe befindet. Sie müssen den folgenden Befehl in Bash ausführen:

    / mnt / c / Programme \ Dateien \ \ (x86 \) / Internet \ Explorer / iexplore.exe

    Beachten Sie das "\" vor dem Leerzeichen und den Klammern. Diese Zeichen müssen "Escape-Zeichen" sein, da Bash nicht erkennt, dass die Zeichen Teil eines Dateipfads sind.

    So übergeben Sie ein Argument an einen Befehl

    Die Bash-Shell übergibt Argumente direkt an die Befehle, die Sie ausführen.

    Wenn Sie beispielsweise ping example.com ausführen möchten, würden Sie Folgendes ausführen:

    /mnt/c/Windows/System32/PING.EXE example.com

    Wenn Sie die Windows-Hosts-Datei in Notepad öffnen möchten, führen Sie Folgendes aus:

    /mnt/c/Windows/System32/notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts"

    Sie verwenden den Standard-Windows-Dateipfad, wenn Sie einen Dateipfad direkt an ein Windows-Programm übergeben. Das liegt daran, dass Bash das Argument direkt weiterleitet. Notepad.exe und andere Windows-Programme erwarten einen Windows-Dateipfad.

    So führen Sie einen integrierten Befehl aus

    Einige Windows-Befehle sind keine EXE-Dateien, sondern in die Eingabeaufforderung selbst integriert. Dies beinhaltet beispielsweise die dir Befehl, den Sie normalerweise in einer Eingabeaufforderung ausführen. Um einen solchen Befehl auszuführen, müssen Sie das ausführen cmd.exe binär mit der Eingabeaufforderung verknüpft und übergeben Sie den Befehl als Argument mit / C, wie folgt:

    /mnt/c/Windows/System32/cmd.exe / C Befehl

    Zum Beispiel, um das auszuführen dir Wenn Sie einen in die Eingabeaufforderung integrierten Befehl ausführen, führen Sie den folgenden Befehl aus:

    /mnt/c/Windows/System32/cmd.exe / c dir

    So fügen Sie dem Pfad Verzeichnisse hinzu

    In der Windows Services for Linux-Umgebung werden ausführbare Dateien von Windows behandelt, ähnlich wie Linux-Binärdateien. Das bedeutet, dass Sie dem Pfad ein Verzeichnis hinzufügen können, das EXE-Dateien enthält, und diese EXE-Dateien dann direkt ausführen. Um beispielsweise das Verzeichnis System32 zu Ihrem Pfad hinzuzufügen, würden Sie Folgendes ausführen:

    export PATH = $ PATH: / mnt / c / Windows / System32

    Sie können dann Windows-EXE-Dateien direkt im Ordner "System32" ausführen:

    PING.exe example.com
    notepad.exe
    cmd.exe / c dir

    Wie man die Ausgabe eines Befehls an einen anderen weiterleitet

    Die Ausgabe eines Windows-Befehls kann an einen Linux-Befehl und umgekehrt weitergeleitet werden. Zum Beispiel können Sie die ipconfig.exe -all Befehl, um Details zu Ihren Netzwerkschnittstellen aufzulisten und an Linux weiterzuleiten grep Befehl zum Durchsuchen der Ausgabe. Um beispielsweise alle Informationen zu Ihrer Verbindung aufzulisten und nach Abschnitten zu suchen, die mit der IPv4-Adresse übereinstimmen, würden Sie Folgendes ausführen:

    /mnt/c/Windows/System32/ipconfig.exe -all | grep "IPv4-Adresse"

    Das ist der grundlegende Prozess. Diese Befehle funktionieren auch, wenn sie in ein Bash-Skript integriert werden. Sie können also ein Bash-Skript schreiben, das sowohl Windows-Befehle als auch Linux-Dienstprogramme enthält. Wenn es in der Bash-Shell ausgeführt wird, funktioniert es in einem Bash-Skript.

    Wenn Sie den anderen Weg wählen möchten, können Sie mit dem Befehl "bash -c" Bash-Befehle an der Standard-Windows-Eingabeaufforderung ausführen.