Startpagina » hoe » Windows-programma's uitvoeren vanuit de Bash Shell van Windows 10

    Windows-programma's uitvoeren vanuit de Bash Shell van Windows 10

    In de Creators-update kunt u met de Bash-shell van Windows 10 nu Windows-binaire bestanden en standaard opdrachtpromptopdrachten uitvoeren, rechtstreeks vanuit Bash. Je kunt zowel Linux- als Windows-programma's uitvoeren vanuit dezelfde Bash-shell, of zelfs Windows-opdrachten opnemen in een Bash-script.

    Wat je moet weten

    Hier zijn enkele basisgegevens die u moet weten over deze functie:

    • Gebruikers account: Programma's die vanuit de Bash-shell worden gestart, worden uitgevoerd alsof ze door het huidige Windows-gebruikersaccount zijn gestart.
    • machtigingen: Deze programma's hebben dezelfde rechten als het proces Bash.exe. Dus, als u wilt dat deze commando's beheerdersrechten hebben, moet u de Bash-shell uitvoeren als beheerder.
    • Werkmap: Windows-programma's delen dezelfde "werkdirectory" als de Bash-shell. Dus als u een opdracht uitvoert die de inhoud van de huidige map vermeldt, wordt de inhoud van de huidige werkdirectory in de Bash-shell weergegeven. Gebruik de CD opdracht om werkmappen te wijzigen.

    Laten we met dat in gedachten eens kijken hoe een programma moet worden uitgevoerd.

    Hoe een Windows-programma uit te voeren

    Om een ​​Windows-programma uit te voeren, voert u het pad naar het .exe-bestand van het programma in de Bash-shell in. Vergeet niet dat je Windows C: -drive beschikbaar is in / mnt / c in Bash. De Bash-omgeving is ook hoofdlettergevoelig, dus u moet het juiste hoofdlettergebruik opgeven.

    Stel dat u het hulpprogramma Ping op C: \ Windows \ System32 \ PING.EXE wilt starten. U voert de volgende opdracht uit:

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

    Het volgende commando zou niet werken, omdat Bash hoofdlettergevoelig is:

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

    Dit is een beetje ingewikkelder als het pad complexe tekens bevat zoals spaties en haken, zoals de map Program Files. Je moet "ontsnappen" aan spaties, haakjes en andere complexe tekens door ze vooraf te plaatsen met een "\" teken.

    Stel dat u bijvoorbeeld het Internet Explorer-programma wilt uitvoeren dat zich bevindt in C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe. In Bash zou je de volgende opdracht moeten uitvoeren:

    / mnt / c / Program \ Files \ \ (x86 \) / Internet \ Explorer / iexplore.exe

    Let op de "\" voor de spatie en haakjes. Deze karakters moeten "ontsnapt" zijn of Bash zal zich niet realiseren dat de karakters deel uitmaken van een bestandspad.

    Een argument doorgeven aan een commando

    De Bash-shell geeft argumenten rechtstreeks door aan de opdrachten die u uitvoert.

    Als u bijvoorbeeld example.com wilt pingelen, voert u het volgende uit:

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

    Of, als u het Windows-hosts-bestand in Kladblok wilde openen, zou u het volgende uitvoeren:

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

    U gebruikt het standaard Windows-bestandspad wanneer u een bestandspad rechtstreeks naar een Windows-programma doorgeeft. Dat komt omdat Bash het argument rechtstreeks doorgeeft. Notepad.exe en andere Windows-programma's verwachten een Windows-bestandspad.

    Hoe een ingebouwd commando uit te voeren

    Sommige Windows-opdrachten zijn geen .exe-bestanden, maar zijn ingebouwd in de opdrachtprompt zelf. Dit omvat bijvoorbeeld de dir commando dat je normaal zou kunnen uitvoeren in een opdrachtprompt. Om een ​​dergelijke opdracht uit te voeren, moet u de cmd.exe binary geassocieerd met de opdrachtprompt en geef het commando door als argument met / C, zoals zo:

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

    Bijvoorbeeld om de dir opdracht ingebouwd in de opdrachtprompt, voert u de volgende opdracht uit:

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

    Hoe mappen aan het pad toe te voegen

    De Windows Services voor Linux-omgeving behandelt Windows-uitvoerbare bestanden vergelijkbaar met de manier waarop Linux-binaries worden behandeld. Dit betekent dat u een map met .exe-bestanden aan het pad kunt toevoegen en die .exe-bestanden dan rechtstreeks kunt uitvoeren. Als u bijvoorbeeld de map System32 aan uw pad wilt toevoegen, voert u het volgende uit:

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

    Vervolgens kunt u Windows .exe-bestanden in de map System32 rechtstreeks uitvoeren, zoals:

    PING.exe example.com
    notepad.exe
    cmd.exe / C richt

    Hoe de output van het ene commando naar het andere te pipen

    De uitvoer van een Windows-opdracht kan worden doorgesluisd naar een Linux-opdracht en omgekeerd. U kunt bijvoorbeeld de ipconfig.exe -all commando om details over je netwerkinterfaces op te nemen en naar Linux te pipen grep opdracht om de uitvoer te zoeken. Als u bijvoorbeeld alle informatie over uw verbinding wilt weergeven en wilt zoeken naar secties die overeenkomen met "IPv4-adres", voert u het volgende uit:

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

    Dat is het basisproces. Deze commando's zullen ook werken wanneer ze zijn opgenomen in een Bash-script, dus je kunt een Bash-script schrijven dat zowel Windows-opdrachten als Linux-hulpprogramma's bevat. Als het in de Bash-shell draait, werkt het in een Bash-script.

    En als u de andere kant op wilt, kunt u de opdracht bash -c gebruiken om Bash-opdrachten uit te voeren vanaf de standaard Windows Command Prompt.