从命令提示符或PowerShell开始(或者很好;我可以弄清楚如何执行另一个给定的),如何调用MSYS2 shell来运行命令?
我包含这些信息以避免XY问题,但我坚信这最好通过上述(更一般)问题的答案来解决.
特别是,我希望编写一个shell脚本来更新第三部分,第3步中列出的软件包.所以我需要这样的东西:
[invoke msys2 bash] -c "pacman -Sy --needed msys2-runtime"
Run Code Online (Sandbox Code Playgroud)
直接调用bash可执行文件不起作用:
C:\>C:\msys64\usr\bin\bash.exe -c "pacman -Sy --needed msys2-runtime"
/usr/bin/bash: pacman: command not found
Run Code Online (Sandbox Code Playgroud)
我认为这是一个环境问题.更改PATH
为包含MSYS2的bin目录的路径也不能解决问题.当它试图安装一个包时,会发生不好的事情(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
Run Code Online (Sandbox Code Playgroud)
尝试调用批处理文件(C:\ msys64\msys2_shell.bat)会在新窗口中打开一个新shell,这使我不知道它是失败还是成功.
那么如何让shell进入MSYS2的正常状态呢?
我们正在努力修复混乱的更新程序,希望它不会出现问题。
您可以在以下示例中看到一些有关如何在创建新安装程序时如何从批处理文件调用MSYS2的示例:
https://github.com/Alexpux/MSYS2-packages/blob/master/msys2-installer/make-msys2-installer.bat
但是正如@StevenPenny所建议的那样,
bash -l -c "pacman ..."
Run Code Online (Sandbox Code Playgroud)
是正确的方法。