Domača » kako » Kako zagnati Windows programe iz Windows 10's Bash Shell

    Kako zagnati Windows programe iz Windows 10's Bash Shell

    V posodobitvi za ustvarjalce vam lupina Bash operacijskega sistema Windows 10 zdaj omogoča zagon binarnih različic sistema Windows in standardnih ukazov Command Prompt neposredno iz programa Bash. Iz istega Bash lupine lahko zaženete programe Linux in Windows, ali pa v ukaze Bash vključite tudi ukaze Windows.

    Kaj morate vedeti

    Tu je nekaj osnovnih podatkov, ki jih morate vedeti o tej funkciji:

    • Uporabniški račun: Programi, ki ste jih zagnali iz lupine Bash, se bodo izvajali, kot da jih je zagnal trenutni uporabniški račun Windows.
    • Dovoljenja: Ti programi bodo imeli enaka dovoljenja kot postopek Bash.exe. Če želite, da imajo ti ukazi skrbniški dostop, morate zagnati lupino Bash kot skrbnik.
    • Delovni imenik: Programi Windows imajo isti delovni imenik kot lupina Bash. Torej, če zaženete ukaz, ki navaja vsebino trenutnega imenika, bo prikazal vsebino trenutnega delovnega imenika v lupini Bash. Uporabi cd ukaz za spremembo delovnih imenikov.

    S tem v mislih, poglejmo, kako zagnati program.

    Kako zagnati program Windows

    Če želite zagnati program Windows, vnesite pot do datoteke .exe programa v lupini Bash. Ne pozabite, da je vaš Windows C: pogon na voljo na / mnt / c v Bash. Okolje Bash je tudi občutljivo na velike in male črke, zato morate določiti pravilne velike črke.

    Recimo, da ste želeli zagnati pripomoček Ping, ki se nahaja na C: Windows System32 PING.EXE. Zaženite ta ukaz:

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

    Naslednji ukaz ne bi deloval, ker Bash razlikuje med velikimi in malimi črkami:

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

    To je nekoliko bolj zapleteno, če pot vsebuje kompleksne znake, kot so presledki in oklepaji, kot so mape Program Files. Morate "pobegniti" presledke, oklepaje in druge kompleksne znake, tako da jim predponirate znak.

    Recimo, da ste želeli zagnati program Internet Explorer, ki se nahaja na C: Programske datoteke (x86) Internet Explorer iexplore.exe. V Bash bi morali zagnati naslednji ukaz:

    / mnt / c / Programske datoteke (x86) / Internet Explorer / iexplore.exe

    Zabeležite “pred” in znake v oklepaju. Ti znaki morajo biti »pobegli« ali Bash ne bo spoznal, da so znaki del poti datoteke.

    Kako prenesti argument na poveljstvo

    Lupina Bash posreduje argumente neposredno ukazom, ki jih izvršite.

    Na primer, če želite ping example.com, bi zaženili:

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

    Če ste želeli odpreti datoteko gostitelja Windows v beležnici, bi zaženili:

    /mnt/c/Windows/System32/notepad.exe "C: gonilniki za Windows System32 in drugi strežniki"

    Pri prenosu poti datoteke do programa Windows uporabljate standardno pot datoteke Windows. To je zato, ker Bash posreduje argument neposredno. Notepad.exe in drugi programi Windows pričakujejo pot do datoteke Windows.

    Kako zagnati vgrajeno ukazno vrstico

    Nekateri ukazi Windows niso .exe datoteke, ampak so vgrajeni v sam ukazni poziv. To na primer vključuje dir ukaza, ki ga lahko običajno izvajate v ukaznem pozivu. Za zagon takega ukaza morate zagnati cmd.exe binarno, povezano z ukaznim pozivom, in mu posreduje ukaz kot argument z / C, tako kot:

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

    Na primer, za zagon dir ukaz, vgrajen v ukazni poziv, zaženete ta ukaz:

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

    Dodajanje imenikov na pot

    Okolje Windows Services for Linux obravnava izvedljive datoteke programa Windows, podobno načinu, kako obravnava binarne datoteke Linux. To pomeni, da lahko na pot dodate imenik z datotekami .exe in jih nato izvedete neposredno. Če želite na primer dodati mapo System32 na svojo pot, bi jo zagnali:

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

    Datoteke Windows .exe, ki se nahajajo v mapi System32, lahko nato zaženete neposredno:

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

    Kako napolniti izhod ene ukaze v drugo

    Izpis ukaza Windows se lahko poveže z ukazom Linux in obratno. Lahko na primer uporabite ipconfig.exe -vse ukaz za seznam podrobnosti o omrežnih vmesnikih in preusmeritev na Linux grep ukaz za iskanje izhodov. Če želite na primer navesti vse informacije o vaši povezavi in ​​poiskati razdelke, ki ustrezajo naslovu »IPv4«, bi zaženili:

    /mnt/c/Windows/System32/ipconfig.exe -vsi | grep "Naslov IPv4"

    To je osnovni proces. Ti ukazi bodo delovali tudi, ko bodo vključeni v Bashov skript, tako da lahko napišete skript Bash, ki vključuje tako ukaze Windows kot tudi pripomočke za Linux. Če se izvaja v lupini Bash, bo deloval v Bash skriptu.

    Če želite iti v drugo smer, lahko uporabite ukaz "bash -c" za zagon ukazov Bash iz standardnega ukaznega poziva Windows.