我在MSYS2项目中使用make
,通常没有什么问题。但是,如果我使用zsh,我就无法切换子系统。例如:
source shell mingw64
提供:
/usr/bin/shell:58: bad substitution
显然,shell
脚本中有bash特定的代码,并且该脚本被源化了,因为它在调用shell中设置了环境变量。
一个解决方法是修改shell
代码,但这可能会被覆盖或变得不兼容,在下一次pacman -Syu
之后。
是否有一般性的解决方案可以在zsh中源化Bash脚本(或针对切换MSYS子系统的特定解决方案)?
make
在这一切中扮演的角色。source
命令是从Makefile
调用的吗?您能提供一个[MCVE]吗?如果您的一个source shell mingw64
命令是MCVE,那么Make与问题有什么关系呢? - Charles Duffysource shell mingw64
。我提到使用make
的原因是MSYS2的一个强制理由就是在Windows中“制作”GNU/POSIX程序的二进制文件。您可以在mingw子系统下获取POSIX仿真,并切换到mingwXX子系统以获取本机二进制文件。当然,没有什么阻止我们只是为了使用Linux shells而使用MSYS2,例如zsh。在后一种情况下,shell
无法正常工作。我不是在询问如何从bash源zsh,因为我认为没有通用的解决方案。但是,从zsh切换MSYS2子系统应该是可能的。 - antonio