Hemsida » hur » Så här kör du Windows-program från Windows 10 s Bash Shell

    Så här kör du Windows-program från Windows 10 s Bash Shell

    I skaparuppdateringen tillåter Windows 10: s Bash-skal nu att du kör Windows-binärer och vanliga kommandopromptkommandon, direkt från Bash. Du kan köra både Linux och Windows-program från samma Bash-skal, eller till och med integrera Windows-kommandon i ett Bash-skript.

    Vad du behöver veta

    Här är några grundläggande detaljer som du behöver veta om den här funktionen:

    • Användarkonto: Program som startas från Bash-skalet körs som om de lanserades av det nuvarande Windows-användarkontot.
    • Behörigheter: Dessa program har samma behörigheter som Bash.exe-processen. Så, om du vill att dessa kommandon ska ha administratörsbehörighet måste du köra Bash-skalet som administratör.
    • Arbetsregister: Windows-program delar samma "arbetsregister" som Bash-skalet. Så om du kör ett kommando som listar innehållet i den aktuella katalogen, kommer det att lista innehållet i den aktuella arbetsmappen i Bash-skalet. Använd CD kommandot för att ändra arbetskataloger.

    Med det i åtanke, låt oss ta en titt på hur man kör ett program.

    Så här kör du ett Windows-program

    För att köra ett Windows-program anger du sökvägen till programmets .exe-fil i Bash-skalet. Kom ihåg att din Windows C: -drivenhet är tillgänglig på / mnt / c i Bash. Bash-miljön är också skiftlägeskänslig, så du måste ange rätt kapitalisering.

    Låt oss säga att du ville starta Ping-verktyget på C: \ Windows \ System32 \ PING.EXE. Du skulle köra följande kommando:

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

    Följande kommando skulle inte fungera, eftersom Bash är skiftlägeskänslig:

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

    Detta är lite mer komplicerat om sökvägen innehåller komplexa tecken som mellanslag och parentes, som programfilerna. Du måste "rymma" utrymmen, parenteser och andra komplexa tecken genom att prefixa dem med ett "\" tecken.

    Låt oss till exempel säga att du ville köra Internet Explorer-programmet som finns på C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe. Du måste springa följande kommando i Bash:

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

    Notera "\" före mellanslag och fäste tecken. Dessa tecken måste vara "escaped" eller Bash kommer inte inse att tecknen är en del av en filväg.

    Hur man skickar en argument till en kommando

    Bash-skalet skickar argument direkt till de kommandon du kör.

    Om du till exempel vill ping example.com kör du:

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

    Eller om du vill öppna Windows hosts-filen i anteckningsblocket kör du:

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

    Du använder den vanliga Windows-filvägen när du skickar en filväg direkt till ett Windows-program. Det beror på att Bash skickar argumentet direkt. Notepad.exe och andra Windows-program räknar med en Windows-filväg.

    Hur man kör ett inbyggt kommando

    Vissa Windows-kommandon är inte .exe-filer, men är inbyggda i kommandotolkningen. Till exempel inkluderar detta dir Kommando du kan normalt köra i en Kommandotolk. För att köra ett sådant kommando måste du springa cmd.exe binär i samband med kommandotolken och ge det kommandot som ett argument med / C, såhär:

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

    Till exempel, för att köra dir kommandot inbyggt i Kommandotolken, skulle du köra följande kommando:

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

    Så här lägger du till kataloger på vägen

    Windows-tjänster för Linux-miljö behandlar Windows-körbara filer som liknar hur det behandlar Linux-binärer. Det betyder att du kan lägga till en katalog med .exe-filer till sökvägen och sedan exekvera dem .exe-filer direkt. Om du till exempel lägger till System32-katalogen till din sökväg kör du:

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

    Du kan sedan köra Windows .exe-filer som finns i mappen System32 direkt, så här:

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

    Hur man rör utloppet från ett kommando till en annan

    Utgången från ett Windows-kommando kan ledas till ett Linux-kommando, och vice versa. Till exempel kan du använda ipconfig.exe -all kommandot för att lista detaljer om dina nätverksgränssnitt och rör det till Linux grep kommando för att söka utmatningen. Om du till exempel vill lista all information om din anslutning och söka efter avsnitt som matchar "IPv4-adress", kör du:

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

    Det är den grundläggande processen. Dessa kommandon fungerar också när de ingår i ett Bash-skript, så du kan skriva ett Bash-skript som innehåller både Windows-kommandon och Linux-verktyg. Om det körs i Bash-skalet fungerar det i ett Bash-skript.

    Och om du vill gå åt andra håll kan du använda kommandot "bash -c" för att köra Bash-kommandon från standard Windows Command Prompt.