Домашняя » как » Как запускать программы Windows из Bash Shell в Windows 10

    Как запускать программы Windows из Bash Shell в Windows 10

    В Creators Update оболочка 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 передает аргументы непосредственно командам, которые вы выполняете.

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

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

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

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

    Вы используете стандартный путь к файлу 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 dir

    Как добавить каталоги в путь

    Среда Windows Services for Linux обрабатывает исполняемые файлы Windows аналогично тому, как она обрабатывает двоичные файлы Linux. Это означает, что вы можете добавить в путь каталог, содержащий файлы .exe, а затем выполнить эти файлы .exe напрямую. Например, чтобы добавить каталог System32 к вашему пути, вы должны выполнить:

    экспорт PATH = $ PATH: / mnt / c / Windows / System32

    Затем вы можете запустить файлы .exe Windows, расположенные непосредственно в папке 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"

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

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