Úvodná » ako » Ako spustiť programy Windows z Windows 10 Bash Shell

    Ako spustiť programy Windows z Windows 10 Bash Shell

    V aktualizácii tvorcov teraz systém Windows 10 Bash shell teraz umožňuje spustiť binárne súbory Windows a štandardné príkazy Command Prompt priamo od Bash. Môžete spustiť programy Linux aj Windows z rovnakého shellu Bash, alebo dokonca začleniť príkazy systému Windows do skriptu Bash.

    Čo potrebuješ vedieť

    Tu je niekoľko základných podrobností o tejto funkcii:

    • Užívateľský účet: Programy spustené z balíka Bash sa spúšťajú, akoby boli spustené aktuálnym používateľským účtom systému Windows.
    • oprávnenie: Tieto programy budú mať rovnaké oprávnenia ako proces Bash.exe. Takže ak chcete, aby tieto príkazy mali prístup administrátora, budete musieť spustiť shell Bash ako správcu.
    • Pracovný adresár: Programy Windows zdieľajú rovnaký "pracovný adresár" ako shell Bash. Ak teda spustíte príkaz, ktorý uvádza obsah aktuálneho adresára, bude obsahovať obsah aktuálneho pracovného adresára v shell Bash. Použi CD príkaz zmeniť pracovné adresáre.

    S ohľadom na to sa pozrime na to, ako spustiť program.

    Ako spustiť program Windows

    Ak chcete spustiť program Windows, zadajte cestu k súboru .exe programu vo formáte Bash. Pamätajte, že vaša jednotka C: Windows je k dispozícii na / mnt / c v Bash. V prostredí Bash sa tiež rozlišujú malé a veľké písmená, takže musíte špecifikovať správne veľké písmená.

    Povedzme, že chcete spustiť nástroj Ping umiestnený na C: \ Windows \ System32 \ PING.EXE. Spustili by ste nasledujúci príkaz:

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

    Nasledujúci príkaz nebude fungovať, pretože Bash rozlišuje veľké a malé písmená:

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

    Je to o niečo zložitejšie, ak cesta obsahuje zložité znaky ako medzery a zátvorky, napríklad priečinky Programové súbory. Musíte "vynechať" medzery, zátvorky a iné zložité znaky tým, že ich predčíslite znakom "\".

    Povedzme napríklad, že chcete spustiť program Internet Explorer umiestnený na C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe. V Bashi budete musieť spustiť nasledujúci príkaz:

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

    Pamätajte znaky "\" pred znakmi medzery a medzery. Tieto znaky musia byť "uniknuté" alebo Bash nebude realizovať, že znaky sú súčasťou cesty k súboru.

    Ako preniesť argument na príkaz

    Bash shell prenesie argumenty priamo na vykonané príkazy.

    Napríklad, ak chcete ping example.com spustiť:

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

    Ak chcete otvoriť súbor hostiteľov systému Windows v programe Poznámkový blok, spustite:

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

    Pri prechode cesty súboru priamo do programu Windows používate štandardnú cestu systému Windows. Je to preto, že Bash priamo argumentuje. Program Notepad.exe a ďalšie programy Windows očakávajú cestu k súboru systému Windows.

    Ako spustiť vstavaný príkaz

    Niektoré príkazy systému Windows nie sú súbory .exe, ale sú zabudované do samotného príkazového riadka. Patrí sem napríklad dir príkaz, ktorý by ste normálne mohli spustiť v príkazovom riadku. Ak chcete spustiť takýto príkaz, musíte spustiť cmd.exe binárne priradené k príkazovému riadku a odovzdať príkaz ako argument s / C, napríklad:

    príkaz /mnt/c/Windows/System32/cmd.exe / C

    Napríklad na spustenie dir príkaz vstavaný do príkazového riadka, by ste spustili nasledujúci príkaz:

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

    Ako pridať adresy do cesty

    Prostredie Windows Services for Linux zaobchádza s spustiteľnými súbormi systému Windows podobným spôsobu, akým zaobchádza s binárami systému Linux. To znamená, že do adresára môžete pridať adresár obsahujúci súbory .exe a potom priamo spustiť tieto súbory .exe. Napríklad, ak chcete pridať adresár System32 do cesty, spustili by ste:

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

    Potom by ste mohli spustiť súbory Windows .exe umiestnené priamo v priečinku System32, napríklad:

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

    Ako vytláčať výstup jedného príkazu do druhého

    Výstup príkazu systému Windows sa dá nasmerovať na príkaz linuxu a naopak. Môžete napríklad použiť ipconfig.exe -all príkaz na zoznam podrobností o vašich sieťových rozhraniach a pripojte ich na Linux grep príkaz na vyhľadanie výstupu. Ak chcete napríklad uviesť všetky informácie o vašom pripojení a vyhľadať sekcie zodpovedajúce adrese IPv4, mali by ste spustiť:

    /mnt/c/Windows/System32/ipconfig.exe - všetko | grep "Adresa IPv4"

    To je základný proces. Tieto príkazy budú fungovať aj vtedy, keď budú začlenené do skriptu Bash, takže si môžete napísať skript Bash, ktorý obsahuje aj príkazy Windows a nástroje Linux. Ak to beží v Bash shell, bude pracovať v Bash skripte.

    A ak chcete ísť iným spôsobom, môžete použiť príkaz "bash -c" na spustenie príkazov Bash zo štandardného príkazového riadka systému Windows.