Bir kabuk betiğini zsh'tan bash kullanarak nasıl kaynaklayabilirim?


14

Zsh kullanıyorum ve çok beğendim, ancak bash'ın doğru değerlendirilmesini gerektiren derleme komut dosyalarına sahip Android kaynağı ile çok çalışıyorum. Bu komut dosyalarının derlemeden önce kaynaklanması ve derleme sırasında kullanılan ortam değişkenlerinin ve kabuk işlevlerinin tanımlanması gerekir.

Zsh bu dosyaları kaynak yapamaz ve emulate bashbenim kabuk sorunu bu sorun bol bol fonksiyonel olmayan olur her boşluk vurmak (ben oh-my-zsh kullanıyorum, belki bu bir neden?):

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

Bu dosyaları değerlendirmek için bash'a geçmememin veya bir bash örneğini çağırmamın ve zsh oturumuma kaynak yaparken tanımladığı yeni ortam değişkenlerini / işlevlerini almamın bir yolu var mı? Yoksa Android'de çalışmam gerektiğinde bash'a geçmeye mahkum muyum?

EDIT : kendi soruma bir cevap buldu. Başka bir kabuk kullanarak dosya kaynaklamak mümkün görünmüyor, ancak Android makro dosyalarının başarısız olması durumunda bu sayfa bir düzeltme getirdi:

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

Temel olarak, basitçe ayarlamak unsetopt nomatchzsh komut dosyalarının tamamlanması için yeterli olan eşsiz joker karakterlerden şikayet etmeyi bırakmasını isteyecektir. completeBir Android makrosuna tamamlama yetenekleri eklemek için bash dahili komutunun kullanımı hakkında hala bir hata kalacak , ancak burada kesinlikle kritik değil.

Yanıtlar:


4

Derleme komut satırınızı, derleme komutlarını yürüten derleme komut dosyalarını kaynaklayan bir bash komut dosyasına koyabilirsiniz.

Gibi bir şey

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

    compile_command

Sonra compile_commandelle çağırmak yerine, yeni bash betiğinizi çağırmanız yeterlidir.


Bu potansiyel bir çözümdür, ancak maalesef ortam komut dosyalarının tamamlanması birkaç saniye alır ve derleme komutu çok değişir. Bu nedenle günlük çalışmak için buna güvenemem.
Gnurou
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.