Bagaimana cara 'sumber' skrip shell menggunakan bash dari zsh?

14

Saya menggunakan zsh dan sangat menyukainya, tetapi banyak bekerja dengan sumber Android yang memiliki skrip kompilasi yang memerlukan bash untuk dievaluasi dengan benar. Script ini harus bersumber sebelum kompilasi dan mendefinisikan variabel lingkungan dan fungsi shell yang digunakan selama kompilasi.

Zsh tidak dapat sumber file ini, dan jika saya mencoba mengeluarkan emulate bashshell saya menjadi tidak berfungsi dengan banyak kesalahan ini setiap kali saya menekan spasi (saya menggunakan oh-my-zsh, mungkin itu penyebabnya?):

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

Apakah ada cara bagi saya untuk tidak beralih ke bash untuk mengevaluasi file-file ini, atau untuk memanggil instance bash dan mengimpor variabel / fungsi lingkungan baru yang didefinisikannya selama pencarian ke sesi zsh saya? Atau saya ditakdirkan untuk beralih ke bash setiap kali saya harus bekerja di Android?

EDIT : menemukan jawaban untuk pertanyaan saya sendiri. Sumber file menggunakan shell lain tampaknya tidak mungkin, tetapi dalam kasus file makro Android gagal, halaman ini membawa perbaikan:

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

Pada dasarnya, hanya pengaturan unsetopt nomatchakan meminta zsh untuk berhenti mengeluh tentang wildcard yang tak tertandingi, yang cukup untuk membawa skrip selesai. Masih akan ada satu kesalahan yang tersisa, tentang penggunaan completeperintah internal bash untuk menambahkan kemampuan penyelesaian ke satu makro Android, tetapi sama sekali tidak kritis di sini.

Gnurou
sumber

Jawaban:

4

Anda bisa menempatkan commandline kompilasi Anda dalam skrip bash, yang mengambil sumber skrip kompilasi yang mengeksekusi perintah kompilasi.

Sesuatu seperti

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

    compile_command

Maka alih-alih memohon compile_commanddengan tangan, Anda cukup memohon skrip bash baru Anda.

Ishak
sumber
Itu solusi potensial, tetapi sayangnya skrip lingkungan membutuhkan beberapa detik untuk menyelesaikan dan perintah kompilasi sangat bervariasi. Karena itu saya tidak bisa mengandalkan ini untuk bekerja setiap hari.
Gnurou