11Sep
V posodobitvi za ustvarjalce vam lupina Bash zdaj omogoča, da zaženete binarne ukaze Windows in standardne ukazne ukaze, neposredno od Bash-a. Z Linuxa in Windows lahko zaženete programe iz iste Bashove lupine ali celo v ukazno vrstico Bash.
Kaj morate vedeti
Tukaj je nekaj osnovnih podrobnosti, ki jih morate poznati o tej funkciji:
- uporabniški račun : Programi, ki se začnejo z lupino Bash, se bodo prikazovali, kot da jih je zagnal trenutni uporabniški račun za Windows.
- Dovoljenja : Ti programi bodo imeli enaka dovoljenja kot postopek Bash.exe. Torej, če želite, da imajo ti ukazi dostop do skrbnika, boste morali zagnati lupino Bash kot skrbnik. Delovni imenik
- : programi Windows delijo isti "delovni imenik" kot lupino Bash. Torej, če zaženete ukaz, ki navaja vsebino trenutnega imenika, bo vsebino trenutnega delovnega imenika v Bash lupini navedla. Za spreminjanje delovnih imenikov uporabite ukaz cd.
S tem v mislih si oglejmo, kako zagnati program.
Kako zagnati program Windows
Če želite zagnati program Windows, vnesite pot do datoteke programa. exe v okvirju teh Bash. Ne pozabite, da je pogon Windows C: na voljo v /mnt/ c v Bashu. Okolje Bash je tudi občutljivo na velikost črk, zato morate navesti pravilno kapitalizacijo.
Recimo, da želite zagnati program Ping, ki se nahaja na C: \ Windows \ System32 \ PING.EXE.Izvedli boste naslednji ukaz:
/mnt/c/Windows/System32/ PING.EXENaslednji ukaz ne bi deloval, ker je Bash občutljiv na velike črke:
/mnt/c/windows/system32/ ping.exeTo je nekoliko bolj zapleteno, če pot vsebuje kompleksne znake, kot so presledki in oklepaj,kot so mape Program Files. Morate "ubežati" presledke, oklepaje in druge zapletene znake, tako da jih predfiksirate z znakom "\".
Na primer, recimo, da želite zagnati program Internet Explorer, ki se nahaja na C: \ Program Files( x86) \ Internet Explorer \ iexplore.exe. V Bashu bi morali zagnati naslednji ukaz:
/mnt/c/ Program \ Datoteke \ \( x86 \) / Internet \ Explorer / iexplore.exePred znakom prostora in nosilca glejte "\".Ti znaki morajo biti "ušli" ali Bash ne zaveda, da so znaki del poti datoteke.
Kako prenesti argument v ukaz
Bash lupine prenaša argumente neposredno na ukaze, ki jih izvršite.
Če želite, na primer, ping example.com, zagnati:
/mnt/c/Windows/System32/ PING.EXE example.comAli, če ste želeli odpreti datoteko gostitelja Windows v Notepadu, ste zagnali:
/mnt/c/Windows/System32/ notepad.exe "C: \ Windows \ System32 \ gonilniki \ etc \ gostitelji "Ko potujete pot do datoteke neposredno v program Windows, uporabljate standardno pot do datoteke Windows. To je zato, ker Bash neposredno prenaša argument. Notepad.exe in drugi programi Windows pričakujejo pot do datoteke programa Windows.
Kako zagnati vgrajeni ukaz
Nekateri ukazi Windows niso datoteke. exe, ampak so vgrajeni v ukazni poziv sam. Na primer, to vključuje ukaz dir, ki ga običajno lahko zaženete v ukaznem pozivu.Če želite zagnati takšen ukaz, morate zagnati binarni cmd.exe povezani z ukaznim pozivom in ga posredovati kot argument s / C, tako:
/mnt/c/Windows/System32/ cmd.exe / C ukazNa primer, za zagon programaukaz, ki je vgrajen v ukazni poziv, bi zagnali naslednji ukaz:
/mnt/c/Windows/System32/ cmd.exe / C dirKako dodati imenike na pot
V okolju Windows Services for Linux so Windows izvedeni programi podobni, kot jih obravnava binarne sisteme Linux. To pomeni, da lahko na pot dodate imenik, ki vsebuje datoteke. exe, in nato neposredno izvede te datoteke. exe. Na primer, če želite dodati mapo System32 na svojo pot, bi zaženete:
izvoz PATH = $ PATH: /mnt/c/Windows/ System32Nato lahko zaženete Windows. exe datoteke, ki se nahajajo v mapi System32, tako kot: primer
PING.exe.com notepad.exe cmd.exe / C dirKako izvesti porazdelitev enega ukaza na drugega
Izhod iz ukaza Windows se lahko usmeri v ukaz Linux in obratno. Na primer, lahko z ukazom ipconfig.exe -all navedete podrobnosti o vaših omrežnih vmesnikih in ga vnesite v ukaz grep grep za iskanje izhoda.Če želite na primer navesti vse podatke o vaši povezavi in poiskati razdelke, ki se ujemajo z naslovom IPv4, bi zaženete:
/mnt/c/Windows/System32/ ipconfig.exe -all |grep "naslov IPv4"To je osnovni postopek. Ti ukazi bodo delovali tudi, ko bodo vključeni v skript Bash, tako da lahko napišete skripto Bash, ki vključuje oba ukaza Windows in pripomočke za Linux.Če se izvaja v lupini Bash, bo deloval v skripti Bash.
In, če želite iti drugače, lahko uporabite ukaz "bash -c" za zagon ukazov Bash iz standardnega ukaznega ukaza Windows.