Какво трябва да знаете
Ето някои основни подробности, които трябва да знаете за тази функция:
- Потребителски акаунт: Програмите, стартирани от Bash shell, ще се изпълняват така, сякаш са стартирани от текущия потребителски акаунт на Windows.
- Разрешения: Тези програми ще имат същите права като процеса Bash.exe. Така че, ако искате тези команди да имат администраторски достъп, ще трябва да стартирате Bash shell като Administrator.
-
Работен указател: Програмите на Windows споделят една и съща "работна директория" като Bash shell. Така че, ако изпълнявате команда, която изброява съдържанието на текущата директория, тя ще изброи съдържанието на текущата работна директория в обвивката Bash. Използвай
cd
команда за промяна на работните директории.
С оглед на това, нека да разгледаме как да изпълните програма.
Как да стартирате програма за Windows
За да стартирате програма за Windows, въведете пътя към файла.exe на програмата в обвивката Bash. Не забравяйте, че устройството ви с Windows C: е налице в / mnt / c в баш. Бас-средата също е чувствителна към малки и големи букви, така че трябва да посочите правилната капитализация.
Да речем, че искате да стартирате Ping помощната програма, разположена на C: Windows System32 PING.EXE. Ще изпълните следната команда:
/mnt/c/Windows/System32/PING.EXE
Следващата команда няма да работи, защото Баш е чувствителна към малки и големи букви:
/mnt/c/windows/system32/ping.exe
Например, да речем, че искате да стартирате програмата Internet Explorer, намираща се в C: Program Files (x86) Internet Explorer iexplore.exe. Трябва да изпълните следната команда в Баш:
/mnt/c/Program Files (x86)/Internet Explorer/iexplore.exe
Забележете "" преди знака за интервал и скоба. Тези знаци трябва да бъдат "избягали" или Баш няма да осъзнае, че знаците са част от пътя на файла.
Как да преминете аргумент към команда
Калъфът Bash предава аргументи директно на командите, които изпълнявате.
Например, ако искате да ping example.com, бихте изпълнили:
/mnt/c/Windows/System32/PING.EXE example.com
Или, ако искате да отворите файла за хостове на Windows в Notepad, ще стартирате:
/mnt/c/Windows/System32/notepad.exe 'C:WindowsSystem32driversetchosts'
Използвате стандартния път на файловете на Windows, когато предавате директно файловия път към програма за Windows. Това е така, защото Баш предава аргумента директно. Notepad.exe и други програми на Windows очакват пътека за Windows файлове.
Как да изпълните вградената команда
Някои команди на Windows не са.exe файлове, а са вградени в самия команден прозорец. Например това включва
dir
командата обикновено може да се изпълнява в командния ред. За да изпълните такава команда, трябва да изпълните
cmd.exe
двоично свързан с командния ред и да го предаде командата като аргумент с / C, както е така:
/mnt/c/Windows/System32/cmd.exe /C command
Например, за да стартирате
dir
команда, вградена в командния ред, трябва да изпълните следната команда:
/mnt/c/Windows/System32/cmd.exe /C dir
Как да добавите директории към пътя
Приложението Windows Services for Linux третира Windows изпълними файлове, подобно на начина, по който третира Linux файловете. Това означава, че можете да добавите директория, съдържаща.exe файлове в пътя и след това да изпълните тези.exe файлове директно. Например, за да добавите директорията System32 към вашия път, бихте изпълнили:
export PATH=$PATH:/mnt/c/Windows/System32
След това бихте могли да стартирате Windows.exe файлове, намиращи се директно в директорията System32, като например:
PING.exe example.com
notepad.exe
cmd.exe /C dir
Как да управлявате изхода на една команда към друга
Изходът на командата на Windows може да бъде прехвърлен към Linux команда и обратно. Например, можете да използвате
ipconfig.exe -all
команда, за да изведете подробности за мрежовите интерфейси и да ги насочите към Linux
grep
команда за търсене на изхода. Например, за да изведете цялата информация за връзката си и да търсите раздели, съвпадащи с "IPv4 адрес", бихте изпълнили:
/mnt/c/Windows/System32/ipconfig.exe -all | grep 'IPv4 Address'
Това е основният процес. Тези команди също ще работят, когато са включени в Bash скрипт, така че можете да напишете Bash скрипт, който включва както командите на Windows, така и помощните програми на Linux. Ако тя се изпълнява в Bash shell, тя ще работи в баш скрипт.
И ако искате да отидете в другата посока, можете да използвате командата "bash -c", за да стартирате командите Баш от стандартния Windows Command Prompt.