Domovská » jak » Jak spustit programy Windows z Windows 10 Bash Shell

    Jak spustit programy Windows z Windows 10 Bash Shell

    V aktualizaci Tvůrce nyní systém Windows 10 Bash shell nyní umožňuje spouštět binární soubory Windows a standardní příkazy Command Prompt přímo od Bash. Můžete spustit programy Linux i Windows ze stejného shellu Bash, nebo dokonce zahrnout příkazy systému Windows do skriptu Bash.

    Co potřebuješ vědět

    Zde jsou některé základní informace, které potřebujete znát o této funkci:

    • Uživatelský účet: Programy spuštěné z shellu Bash budou spuštěny, jako kdyby byly spuštěny aktuálním uživatelským účtem systému Windows.
    • Oprávnění: Tyto programy budou mít stejné oprávnění jako proces Bash.exe. Pokud chcete, aby tyto příkazy měly přístup Administrátor, budete muset spustit shell Bash jako administrátor.
    • Pracovní adresář: Programy Windows sdílejí stejný "pracovní adresář" jako shell Bash. Pokud tedy spustíte příkaz obsahující seznam aktuálního adresáře, zobrazí obsah aktuálního pracovního adresáře ve složce Bash. Použijte CD příkaz změnit pracovní adresáře.

    S ohledem na to se podívejme na to, jak spustit program.

    Jak spustit program Windows

    Chcete-li spustit program Windows, zadejte cestu do souboru .exe programu ve složce Bash. Nezapomeňte, že vaše jednotka C: Windows je k dispozici na / mnt / c v Bash. Prostředí Bash také rozlišuje velká a malá písmena, takže musíte zadat správnou kapitalizaci.

    Řekněme, že jste chtěli spustit nástroj Ping umístěný na C: \ Windows \ System32 \ PING.EXE. Byl byste spustit následující příkaz:

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

    Následující příkaz by nefungoval, protože Bash rozlišuje velká a malá písmena:

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

    To je trochu komplikovanější, pokud cesta obsahuje složité znaky jako mezery a závorky, jako jsou složky Program Files. Musíte "uniknout" mezery, závorky a další složité znaky tím, že jim předponujete znak "\".

    Například řekněme, že chcete spustit program Internet Explorer umístěný na C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe. V Bashu budete muset spustit následující příkaz:

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

    Všimněte si "\" před znaky mezery a závorky. Tyto znaky musí být "uniklé" nebo Bash si neuvědomí, že znaky jsou součástí cesty k souboru.

    Jak předat argument k příkazu

    Bash shell předá argumenty přímo příkazům, které spouštíte.

    Pokud například chcete ping example.com spouštět:

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

    Nebo pokud chcete otevřít soubor hostitelů systému Windows v programu Poznámkový blok, spustili byste:

    /mnt/c/Windows/System32/notepad.exe "C: \ Windows \ System32 \ ovladače \ etc \ hosts"

    Používáte-li standardní cestu k souboru Windows při předávání cesty souboru přímo do programu Windows. To je proto, že Bash předává argument přímo. Notepad.exe a další programy Windows očekávají cestu k souboru systému Windows.

    Jak spustit vestavěný příkaz

    Některé příkazy systému Windows nejsou soubory typu .exe, ale jsou zabudovány do samotného příkazového řádku. Jedná se například o dir příkaz, který byste normálně spustili v příkazovém řádku. Chcete-li spustit takový příkaz, musíte spustit cmd.exe binární přidružené k příkazovému řádku a předat příkaz jako argument s / C, tak jako tak:

    /mnt/c/Windows/System32/cmd.exe / C příkaz

    Například pro spuštění dir příkaz vestavěný do příkazového řádku, spusťte následující příkaz:

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

    Jak přidat adresáře do cesty

    Prostředí Windows Services for Linux zpracovává spustitelné soubory systému Windows podobné způsobu, jakým binární soubory systému Linux pracují. To znamená, že můžete do adresáře přidat adresář obsahující soubory .exe a potom tyto soubory exe spustit přímo. Chcete-li například přidat adresář System32 do cesty, spustili byste:

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

    Potom můžete spustit soubory Windows .exe umístěné ve složce System32 přímo, například takto:

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

    Jak přenést výstup jednoho příkazu na druhý

    Výstup příkazu systému Windows lze přenést na příkaz Linux a naopak. Například můžete použít ipconfig.exe -all příkaz pro vypsání podrobností o síťových rozhraních a pipojení k Linuxu grep příkaz pro vyhledání výstupu. Chcete-li například uvést všechny informace o vašem připojení a hledat sekce odpovídající adrese IPv4, měli byste spustit:

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

    To je základní proces. Tyto příkazy budou také fungovat, pokud budou začleněny do skriptu Bash, takže můžete napsat Bash skript, který obsahuje jak příkazy systému Windows, tak nástroje pro Linux. Pokud běží v shellu Bash, bude pracovat v Bash skriptu.

    A pokud chcete jít opačným způsobem, můžete příkaz "bash -c" spustit příkazy Bash ze standardního příkazového řádku systému Windows.