如何使用 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 腳本,而不是手動呼叫。

相關內容