Как я могу автоматизировать отправку команд из Windows в Linux (WSL / Ubuntu)?

Я хотел бы автоматизировать компиляцию моей программы для Linux через WSL под управлением Ubuntu 20, чтобы я мог настроить оконную часть задачи IDE, которая будет выполнять компиляцию за меня в Linux. Я думал о создании приложения win32 для запуска исполняемого файла Ubuntu и отправки команд на его стандартный ввод, как если бы я вводил их вручную, но поскольку Ubuntu является UWP, я не думаю, что это возможно? Параметрами сценария автоматизации будут путь к каталогу основного исходного файла, имя основного исходного файла и любые другие параметры от 1 до 4-5. Я ожидаю, что автоматика молчит. Пример автоматизированных команд:

cd /mnt/<provided path>
compiler -switch1 -switch2 -switch3 -out <provided executable file name> <provided source file name>

Компилятор будет доступен из любого места из-за переменной среды, установленной в .bashrc.

1 ответ
1

WSL позволяет очень легко запускать приложения из другой среды — в обоих направлениях. В Windows вы можете использовать C:WindowsSystem32bash.exe для запуска любых команд с помощью Bash в вашем WSL GNU / Linux.

Например — скрипт:

c:WindowsSystem32bash.exe -c "/mnt/c/Temp/your-bash-cmd.sh"

type C:Tempyour-bash-cmd.sh | c:WindowsSystem32bash.exe

Или команды для запуска:

c:WindowsSystem32bash.exe -c "ls -al ; echo DONE"

Обратите внимание на то, чтобы использовать правильный путь к файловой системе, подходящий для каждой среды, и что сценарии, передаваемые из Windows в Bash, должны быть закодированы с разрывами строк Linux.

  • Спасибо большое. Это должно было быть очевидно. Однако есть одна проблема: похоже, он не принимает во внимание переменные среды, например .bashrc. Если я сделаю cd $ SRC, он ничего не сделает.

    — студии NS
    2 часа назад

  • Видеть это для получения информации о передаче переменных среды Windows в WSL и наоборот. Если вы говорите об установке переменных среды в .bashrc, Обратите внимание, что bash не читает этот файл при выполнении с -c вариант.

    — NotTheDr01ds
    2 часа назад

  • @ NotTheDr01ds Я имел в виду, что запуск bash.exe без каких-либо параметров и подключение его stdout и stderr приводит к тому, что он действует иначе, чем обычно. Часть этого, похоже, является частью .bashrc, которая говорит: # Если не работает в интерактивном режиме, ничего не делайте. комментирование следующих нескольких строк ниже, которое, кажется, решает проблему переменных среды, но некоторые вещи все еще кажутся странными, например, команда cd не дает никакой обратной связи.

    — студии NS
    1 час назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *