
我正在使用 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 停止抱怨不匹配的通配符,這足以使腳本完成。關於使用complete
bash 內部命令為 Android 巨集新增補全功能,仍然會存在一個錯誤,但這絕對不是關鍵。
答案1
您可以將編譯命令列放在 bash 腳本中,該腳本在執行編譯命令之前取得編譯腳本。
就像是
#!/bin/bash
. /path/to/environmentscript
. /path/to/morefunctionsscript
compile_command
compile_command
然後,您只需呼叫新的 bash 腳本,而不是手動呼叫。