Как запустить программы Windows из Windows 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. Вы должны «избегать» пробелов, скобок и других сложных символов, префикс их символом «\».

Например, предположим, что вы хотите запустить программу Internet Explorer, расположенную в папке C: \ Program Files (x86) \ Internet Explorer \ iexplore.exe. Вам нужно будет запустить следующую команду в Bash:

/ mnt / c / Program \ Files \ \ (x86 \) / Internet \ Explorer / iexplore.exe

Обратите внимание на «\» перед символами пробела и скобки. Эти символы должны быть «экранированы», или Bash не понимает, что символы являются частью пути к файлу.

Как передать аргумент команде

Оболочка Bash передает аргументы непосредственно командам, которые вы выполняете.

Например, если вы хотите выполнить ping example.com, вы должны запустить:

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

Или, если вы хотите открыть файл Windows hosts в «Блокноте», вы должны запустить:

/mnt/c/Windows/System32/notepad.exe «C: \ Windows \ System32 \ drivers \ etc \ hosts»

Вы используете стандартный путь к файлу Windows при передаче пути к файлу напрямую в программу Windows. Это потому, что Баш передает аргумент напрямую. Notepad.exe и другие программы Windows ожидают путь к файлу Windows.

Как запустить встроенную команду

Некоторые команды Windows не являются .exe-файлами, а встроены в командную строку. Например, это включает в себя команду dir, которую вы обычно запускаете в командной строке. Чтобы запустить такую ​​команду, вам нужно запустить двоичный файл cmd.exe, связанный с командной строкой, и передать ему команду в качестве аргумента с / C, например:

/mnt/c/Windows/System32/cmd.exe / C-команда

Например, чтобы запустить команду 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, чтобы просмотреть сведения о своих сетевых интерфейсах и передать ее команде grep Linux для поиска вывода. Например, чтобы перечислить всю информацию о вашем соединении и найти разделы, соответствующие «IPv4 Address», вы должны запустить:

/mnt/c/Windows/System32/ipconfig.exe -all | grep «Адрес IPv4»

Это основной процесс. Эти команды также будут работать, если они включены в сценарий Bash, поэтому вы можете написать сценарий Bash, который включает в себя как команды Windows, так и утилиты Linux. Если он работает в оболочке Bash, он будет работать в сценарии Bash.

И, если вы хотите пойти другим путем, вы можете использовать команду «bash -c» для запуска команд Bash из стандартной командной строки Windows.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.