11Sep

So führen Sie Windows-Programme aus der Bash-Shell von Windows 10 aus

click fraud protection

Im Creators Update ermöglicht die Bash-Shell von Windows 10 jetzt die Ausführung von Windows-Binärdateien und Standardbefehlsbefehlen direkt von Bash aus. Sie können sowohl Linux- als auch Windows-Programme mit derselben Bash-Shell ausführen oder sogar Windows-Befehle in ein Bash-Skript integrieren.

Was Sie über

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

  • Benutzerkonto : Programme, die von der Bash-Shell gestartet werden, werden so ausgeführt, als wären sie vom aktuellen Windows-Benutzerkonto gestartet worden.
  • Berechtigungen : Diese Programme haben die gleichen Berechtigungen wie der Prozess Bash.exe. Wenn diese Befehle Administratorzugriff haben sollen, müssen Sie die Bash-Shell als Administrator ausführen.
  • Arbeitsverzeichnis : Windows-Programme teilen sich das gleiche "Arbeitsverzeichnis" wie die Bash-Shell. Wenn Sie also einen Befehl ausführen, der den Inhalt des aktuellen Verzeichnisses auflistet, listet es den Inhalt des aktuellen Arbeitsverzeichnisses in der Bash-Shell auf. Verwenden Sie den Befehl cd, um Arbeitsverzeichnisse zu ändern.
    instagram viewer

Lassen Sie uns einen Blick darauf werfen, wie man ein Programm ausführt.

So führen Sie ein Windows-Programm aus

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

Nehmen wir an, Sie möchten 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, da Bash Groß-und Kleinschreibung beachtet:

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

Dies ist ein bisschen komplizierter, wenn der Pfad komplexe Zeichen wie Leerzeichen und Klammern enthält,wie die Programme-Ordner. Sie müssen Leerzeichen, Klammern und andere komplexe Zeichen "flüchten", indem Sie ihnen ein "\" -Zeichen voranstellen.

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

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

Beachten Sie das "\" vor dem Leerzeichen und Klammer Zeichen. Diese Zeichen müssen "maskiert" sein oder Bash erkennt nicht, dass die Zeichen Teil eines Dateipfads sind.

So übergeben Sie ein Argument an einen Befehl

Die Bash-Shell übergibt Argumente direkt an die von Ihnen ausgeführten Befehle.

Wenn Sie beispielsweise example.com pingen wollten, würden Sie Folgendes ausführen:

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

Oder, wenn Sie die Windows-Hosts-Datei im Editor öffnen wollten, würden Sie Folgendes ausführen:

/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 weitergibt. 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 sind in die Eingabeaufforderung integriert. Dies schließt beispielsweise den Befehl dir ein, den Sie normalerweise in einer Eingabeaufforderung ausführen. Um einen solchen Befehl auszuführen, müssen Sie die mit der Eingabeaufforderung verknüpfte binary.exe-Binärdatei ausführen und den Befehl als Argument mit / C übergeben, etwa so:

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

Zum Beispiel, um das Verzeichnis auszuführenBefehl, der in die Eingabeaufforderung integriert ist, führen Sie den folgenden Befehl aus:

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

Hinzufügen von Verzeichnissen zum Pfad

Die Umgebung von Windows Services für Linux behandelt ausführbare Windows-Dateien ähnlich wie Linux-Binärdateien. Dies 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 System32-Verzeichnis zu Ihrem Pfad hinzuzufügen, führen Sie Folgendes aus:

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

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

PING.exe Beispiel.com notepad.exe cmd.exe / C dir

Wie die Ausgabe von einem Befehl zu einem anderen

Pipe

Die Ausgabe eines Windows-Befehls kann an einen Linux-Befehl weitergeleitet werden und umgekehrt. Beispielsweise können Sie den Befehl ipconfig.exe -all verwenden, um Details zu Ihren Netzwerkschnittstellen aufzulisten und sie an den Linux-Befehl grep zu übergeben, um die Ausgabe zu durchsuchen. Um beispielsweise alle Informationen zu Ihrer Verbindung aufzulisten und nach Abschnitten zu suchen, die mit "IPv4-Adresse" übereinstimmen, führen Sie Folgendes aus:

/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 sind. 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.

Und wenn Sie in die andere Richtung gehen möchten, können Sie den Befehl "bash -c" verwenden, um Bash-Befehle über die Standard-Windows-Eingabeaufforderung auszuführen.

VERWANDTE ARTIKEL
Erstellen und Ausführen von Bash Shell-Skripten unter Windows 10
Ausführen von Linux-Befehlen von außerhalb der Bash Shell unter Windows 10