Wie kann man ein Shell-Skript mit bash aus zsh 'erzeugen'?

14

Ich benutze zsh und mag es sehr, aber ich arbeite viel mit Android-Quellen, die Kompilierungsskripte enthalten, die eine korrekte Auswertung von bash erfordern. Diese Skripte müssen vor dem Kompilieren bereitgestellt werden und Umgebungsvariablen und Shell-Funktionen definieren, die während des Kompilierens verwendet werden.

Zsh kann diese Dateien nicht als Quelle verwenden, und wenn ich versuche, emulate bashmeine Shell auszugeben, wird sie bei jedem Drücken der Leertaste funktionsunfähig. (Ich verwende oh-my-zsh. Vielleicht ist das eine Ursache?):

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

Gibt es eine Möglichkeit für mich, nicht auf bash zu wechseln, um diese Dateien auszuwerten, oder eine bash-Instanz aufzurufen und die neuen Umgebungsvariablen / -funktionen, die während des Sourcing definiert wurden, in meine zsh-Sitzung zu importieren? Oder bin ich dazu verdammt, jedes Mal auf Bash umzusteigen, wenn ich mit Android arbeiten muss?

EDIT : habe eine Antwort auf meine eigene Frage gefunden. Das Beschaffen einer Datei mit einer anderen Shell scheint nicht möglich zu sein, aber im Fall, dass Android-Makrodateien fehlschlagen, brachte diese Seite einen Fix:

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

Grundsätzlich unsetopt nomatchwird zsh durch einfaches Setzen aufgefordert, sich nicht mehr über nicht übereinstimmende Platzhalter zu beschweren, was ausreicht, um die Skripte zu vervollständigen. Es bleibt noch ein Fehler bezüglich der Verwendung des completeinternen Befehls bash, um einem Android-Makro Vervollständigungsfunktionen hinzuzufügen, der hier jedoch absolut nicht kritisch ist.

Gnurou
quelle

Antworten:

4

Sie können Ihre Kompilierungsbefehlszeile in ein Bash-Skript einfügen, das die Kompilierungsskripten vor dem Ausführen des Kompilierungsbefehls generiert.

Etwas wie

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

    compile_command

Statt compile_commandvon Hand aufzurufen, rufen Sie einfach Ihr neues Bash-Skript auf.

Isaac
quelle
Das ist eine mögliche Lösung, aber leider dauert die Ausführung der Umgebungsskripte einige Sekunden, und der Kompilierungsbefehl ist sehr unterschiedlich. Darum kann ich mich nicht darauf verlassen, dass ich täglich arbeite.
Gnurou