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.