Вызовите оболочку MSYS2 из командной строки или PowerShell

Начиная с командной строки или PowerShell (все в порядке; я могу выяснить, как сделать другое с учетом данного), как я могу вызвать оболочку MSYS2 для запуска команды?

Более конкретная проблема

Я включил эту информацию, чтобы избежать проблемы XY, но я твердо уверен, что это лучше всего решить с помощью ответа на вышеупомянутый (более общий) вопрос.

В частности, я надеюсь написать сценарий оболочки для обновления пакетов, перечисленных в части III, шаг 3, здесь. Поэтому мне нужно что-то вроде:

[invoke msys2 bash] -c "pacman -Sy --needed msys2-runtime"

Вызов исполняемого файла bash напрямую не работает:

C:\>C:\msys64\usr\bin\bash.exe -c "pacman -Sy --needed msys2-runtime"
/usr/bin/bash: pacman: command not found

Я предполагаю, что это проблема окружающей среды. изменения PATH включение пути к каталогу bin MSYS2 также не решает проблему. Когда он пытается установить пакет, происходит что-то плохое (nano - просто пример):

C:\>bash -c "pacman -Sy --needed --noconfirm nano"
:: Synchronizing package databases...
 mingw32 is up to date
 mingw64 is up to date
 msys is up to date
resolving dependencies...
looking for conflicting packages...

Packages (1) nano-2.3.6-2

Total Installed Size:  1.81 MiB
Net Upgrade Size:      0.17 MiB

:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring                                                                   [########################################################] 100%
(1/1) checking package integrity                                                                 [########################################################] 100%
(1/1) loading package files                                                                      [########################################################] 100%
(1/1) checking for file conflicts                                                                [########################################################] 100%
(1/1) checking available disk space                                                              [########################################################] 100%
(1/1) upgrading nano                                                                             [########################################################] 100%
error: command (/usr/bin/bash /usr/bin/bash -c . /tmp/alpm_shqjUE/.INSTALL; post_upgrade 2.3.6-2 2.3.2-1 ) failed to execute correctly

Попытка вызвать командный файл (C:\msys64\msys2_shell.bat) открывает новую оболочку в новом окне, из-за чего я не знаю, была ли она неудачной или успешной.

Так как же мне перевести оболочку в нормальное состояние MSYS2?

1 ответ

Решение

Мы прилагаем все усилия, чтобы исправить нашу грязную процедуру обновления, мы хотим, чтобы она была беспроблемной.

Вы можете увидеть некоторые примеры того, как мы вызываем MSYS2 из командного файла, когда мы создаем новый установщик в:

https://github.com/Alexpux/MSYS2-packages/blob/master/msys2-installer/make-msys2-installer.bat

Но, как подсказывает @StevenPenny, bash -l -c "pacman ..." - правильный путь.

Другие вопросы по тегам