
私は zsh を使っていて、とても気に入っていますが、Android ソースを頻繁に使用しており、そのコンパイル スクリプトを正しく評価するには bash が必要です。これらのスクリプトはコンパイル前にソース化され、コンパイル中に使用される環境変数とシェル関数を定義する必要があります。
Zsh はこれらのファイルを入手できず、実行しようとすると、emulate bash
スペースを押すたびにこれらのエラーが大量に表示され、シェルが機能しなくなります (私は oh-my-zsh を使用していますが、これが原因でしょうか?):
url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*
これらのファイルを評価するために bash に切り替えたり、bash インスタンスを呼び出して、ソース中に定義された新しい環境変数/関数を zsh セッションにインポートしたりしない方法はありますか? それとも、Android で作業する必要があるたびに bash に切り替えるしかないのでしょうか?
編集: 自分の質問に対する答えが見つかりました。別のシェルを使用してファイルをソース化することは不可能のようですが、Android マクロ ファイルが失敗する場合は、このページで修正方法が紹介されています。
http://nilvec.com/building-cyanogen-from-source/
基本的に、設定するだけで、unsetopt nomatch
一致しないワイルドカードに関するエラーを zsh が報告しなくなるため、スクリプトを完了するのに十分です。1 つの Android マクロに補完機能を追加するために bash 内部コマンドを使用するというエラーがまだ 1 つ残っていますcomplete
が、ここではまったく重要ではありません。
答え1
コンパイル コマンドラインを bash スクリプトに配置すると、コンパイル コマンドを実行する前にコンパイル スクリプトがソース化されます。
何かのようなもの
#!/bin/bash
. /path/to/environmentscript
. /path/to/morefunctionsscript
compile_command
compile_command
次に、手動で呼び出す代わりに、新しい bash スクリプトを呼び出すだけです。