как запустить файл .sh в Ubuntu с помощью installScript

Я создаю установку с помощью InstallShield 2018 в Windows 10. Мне нужно выполнить файл сценария (.sh) в Ubuntu из функции в Installscript. Я пробовал следующее, но это не сработало:

szCmdPath = "C:\\Users\\Admin\\AppData\\Local\\Microsoft\\WindowsApps\\Ubuntu.exe";
szCmdLine = ". /mnt/d/test.sh";
LaunchAppAndWait( szCmdPath, szCmdLine, WAIT);

Однако я могу выполнить тот же самый файл в терминале Ubuntu, и он отлично работает. Я включил подсистему Windows для Linux и установил Ubuntu на Windows. Почему это происходит? Почему я могу запустить cmd.exe из сценария установки, но не могу запустить Ubuntu? Заранее спасибо.

РЕДАКТИРОВАТЬ 1: если я передам пустую строку в качестве параметра, Ubuntu запустится и будет ждать моих входных команд. Но когда я передаю путь к моему файлу сценария, ничего не происходит, кроме мигания консоли терминала, прежде чем моя установка продолжится.


person Thế Long    schedule 07.05.2018    source источник


Ответы (1)


Судя по прочтению, wsl и ubuntu немного отличаются. Похоже, что wsl немного волшебно и иногда похоже на bash -c или ubuntu -c, тогда как вы можете считать Ubuntu.exe чем-то эквивалентным /bin/bash.

Если вы попытаетесь запустить /bin/bash . /mnt/d/test.sh из командной строки bash, дела пойдут плохо. Таким образом, правильный подход будет зависеть от содержимого вашего сценария и от того, что вам нужно сделать. Мне кажется наиболее вероятным один из следующих вариантов:

  • удалите . из вашей команды; вместо этого запустите ...\Ubuntu.exe /mnt/d/test.sh
  • добавьте -c к вашей команде; вместо этого запустите ...\Ubuntu.exe -c . /mnt/d/test.sh

Обратите внимание, что %LOCALAPPDATA%\Microsoft\WindowsApps\Ubuntu.exe — это специальный файл (ноль байтов), поэтому вполне вероятно, что он нуждается в специальной обработке. Например, возможно, для этого требуется 64-битная вызывающая программа. В этом случае вам может потребоваться обернуть его вызовом через 64-битную командную строку. Однако мои быстрые тесты не показывают такой вероятности, поэтому я думаю, что это будет работать без этой дополнительной косвенности.

person Michael Urman    schedule 07.05.2018