如何使用 zsh 中的 bash 'source' 一个 shell 脚本?

Gnu*_*rou 14 bash zsh oh-my-zsh

我正在使用 zsh 并且非常喜欢它,但是与 Android 源代码一起工作很多,它具有需要正确评估 bash 的编译脚本。这些脚本需要在编译之前获取并定义编译期间使用的环境变量和 shell 函数。

Zsh 无法获取这些文件,并且如果我尝试在emulate bash每次点击空格时尝试发出我的 shell 变得非功能性并出现大量这些错误(我正在使用 oh-my-zsh,也许这是一个原因?):

url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*
Run Code Online (Sandbox Code Playgroud)

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

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

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

基本上,简单的设置unsetopt nomatch将要求 zsh 停止抱怨不匹配的通配符,这足以使脚本完成。仍然会留下一个错误,关于使用completebash 内部命令为一个 Android 宏添加完成功能,但这里绝对不是关键。

Isa*_*aac 4

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

就像是

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

    compile_command
Run Code Online (Sandbox Code Playgroud)

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