为了避免将长命令重新命名为MSYS进行配置,我通常使用批处理文件来存储命令,如下所示:
./configure \
--arch=x86_64 \
--target-os=win64 \
--toolchain=msvc \
--enable-cross-compile \
--enable-gpl \
--disable-debug \
--enable-shared \
这种方式适用于MSYS。但是当我在MSYS2中运行批处理文件时,它会找出许多错误消息,如:
'.' is not recognized as an internal or external command,
operable program or batch file.
'--arch' is not recognized as an internal or external command,
operable program or batch file.
etc...
任何人都可以解释一下原因是什么吗?
答案 0 :(得分:0)
正如您所示,您的“批处理”文件看起来更像是Bourne shell脚本,因此它绝对不应该被限定为.bat
文件。现在,如果您将限定为.bat
文件,则MSYS将无法直接运行它;它需要一个shebang行来使它可以作为shell脚本执行。从您显示的错误消息中可以看出,MSYS2可能试图通过将执行权交给Windows命令解释器而以MSYS不这样做的方式变得聪明(那些是cmd.exe
错误消息);由于脚本采用Bourne shell语法,因此您希望MSYS2直接在bash
中运行它。
BTW,MSYS shell 是 bash
; AFAIK,MSYS2也提供bash
作为其主要外壳。