Як запускати програми Windows з Windows 10 в Bash Shell
У розділі Оновлення Творця оболонка Bash Windows 10 тепер дозволяє запускати двійкові файли Windows і стандартні команди командного рядка прямо з Bash. Ви можете запускати програми Linux і Windows з тієї ж оболонки Bash, або навіть включати команди Windows у сценарій Bash.
Що потрібно знати
Нижче наведено деякі основні відомості про цю функцію:
- Обліковий запис користувача: Програми, запущені з оболонки Bash, виконуються так, як якщо б вони були запущені поточним обліковим записом користувача Windows.
- Дозволи: Ці програми матимуть ті ж дозволи, що й процес Bash.exe. Отже, якщо ви хочете, щоб ці команди мали доступ адміністратора, вам потрібно запустити оболонку Bash як адміністратор.
- Робочий каталог: Програми Windows спільно використовують "робочу директорію" як оболонку Bash. Отже, якщо ви виконуєте команду, яка перераховує вміст поточного каталогу, вона буде перелічувати вміст поточного робочого каталогу в оболонці Bash. Використовувати
cd
команда для зміни робочих каталогів.
Маючи це на увазі, давайте розглянемо, як запускати програму.
Як запустити програму Windows
Щоб запустити програму Windows, введіть шлях до файлу .exe програми в оболонці Bash. Пам'ятайте, що ваш диск Windows C: доступний в / mnt / c у Bash. Середовище Bash також чутливо до регістру, тому потрібно вказати правильні великі літери.
Припустимо, ви хотіли запустити утиліту Ping, розташовану на папці C: Windows System32 PING.EXE. Ви хочете виконати таку команду:
/mnt/c/Windows/System32/PING.EXE
Наступна команда не працює, оскільки Bash чутливий до регістру:
/mnt/c/windows/system32/ping.exe
Це трохи складніше, якщо шлях містить складні символи, такі як пробіли та дужки, такі як папки Program Files. Ви повинні "втекти" пробіли, дужки та інші складні символи, заповнивши їх символом "\ t.
Наприклад, скажімо, ви хотіли запустити програму Internet Explorer, розташовану в папці C: Program Files (x86) Internet Explorer iexplore.exe. У Bash потрібно виконати таку команду:
/ mnt / c / Програмні файли (x86) / Internet Explorer / iexplore.exe
Зверніть увагу на символи "\ _" перед пробілом та символами дужок. Ці символи повинні бути "вилучені" або Bash не зрозуміє, що символи є частиною шляху до файлу.
Як передати аргумент команді
Оболонка Bash передає аргументи безпосередньо до команд, які ви виконуєте.
Наприклад, якщо ви хотіли б надати відповідь на запит в example.com, виконайте такі дії:
/mnt/c/Windows/System32/PING.EXE example.com
Або, якщо ви хочете відкрити файл хостів Windows у Блокноті, запустіть:
/mnt/c/Windows/System32/notepad.exe "C: Драйвери для Windows System32 і т.д."
Ви використовуєте стандартний шлях до файлу Windows при передачі шляху файлу безпосередньо до програми Windows. Це тому, що Bash передає аргумент безпосередньо. Notepad.exe та інші програми Windows очікують шлях до файлу Windows.
Як запустити вбудовану команду
Деякі команди Windows не є .exe файлами, але вбудовані в сам командний рядок. Наприклад, це включає в себе реж
Команда, яку ви зазвичай можете запускати в командному рядку. Щоб запустити таку команду, потрібно запустити cmd.exe
двійковий файл, асоційований з командним рядком і передає йому команду як аргумент з / C, так:
/mnt/c/Windows/System32/cmd.exe / C команда
Наприклад, щоб запустити реж
команду, вбудовану в командний рядок, виконайте таку команду:
/mnt/c/Windows/System32/cmd.exe / C реж
Як додати каталоги до шляху
Середовище Windows Services для 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 реж
Як трубувати вихід однієї команди іншому
Вихід команди Windows може бути переданий команді Linux, і навпаки. Наприклад, ви можете використовувати ipconfig.exe -всі
команда для перегляду деталей про ваші мережеві інтерфейси та передачі їх у Linux grep
команда для пошуку виводу. Наприклад, щоб перерахувати всю інформацію про ваше підключення та шукати розділи, що збігаються з адресою "IPv4", виконайте такі дії:
/mnt/c/Windows/System32/ipconfig.exe -за всі | grep "Адреса IPv4"
Це основний процес. Ці команди також працюватимуть при включенні в Bash-скрипт, так що ви можете написати сценарій Bash, який включає як команди Windows, так і утиліти Linux. Якщо вона виконується в оболонці Bash, вона буде працювати у сценарії Bash.
І, якщо ви хочете піти в іншу сторону, ви можете скористатися командою "bash -c" для запуску команд Bash зі стандартного командного рядка Windows.