如何使用 bash 从 zsh 中“获取”shell 脚本?

如何使用 bash 从 zsh 中“获取”shell 脚本?

我使用 zsh,并且非常喜欢它,但我经常使用 Android 源代码,因为其中包含需要正确评估 bash 的编译脚本。这些脚本需要在编译之前获取,并定义编译期间使用的环境变量和 shell 函数。

Zsh 无法获取这些文件,如果我尝试发出,emulate bash我的 shell 就会变得无法运行,每次我遇到空格时都会出现大量这些错误(我正在使用 oh-my-zsh,也许这是一个原因?):

url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*

有没有办法让我不切换到 bash 来评估这些文件,或者调用 bash 实例并将它在采购期间定义的新环境变量/函数导入到我的 zsh 会话中?还是每次我需要在 Android 上工作时,我都注定要切换到 bash?

编辑:找到了我自己的问题的答案。使用另一个 shell 获取文件似乎是不可能的,但在 Android 宏文件失败的情况下,此页面提供了修复:

http://nilvec.com/building-cyanogen-from-source/

基本上,只需设置一下unsetopt nomatch就可以让 zsh 停止抱怨通配符不匹配,这足以完成脚本。仍然会有一个错误,关于使用completebash 内部命令为一个 Android 宏添加完成功能,但这绝对不是关键。

答案1

您可以将编译命令行放在 bash 脚本中,该脚本在执行编译命令之前获取编译脚本。

就像是

    #!/bin/bash
    . /path/to/environmentscript
    . /path/to/morefunctionsscript

    compile_command

然后,您无需手动调用compile_command,只需调用新的 bash 脚本。

相关内容