Comment «source» un script shell en utilisant bash à partir de zsh?


14

J'utilise zsh et j'aime beaucoup, mais je travaille beaucoup avec la source Android qui a des scripts de compilation qui nécessitent que bash soit évalué correctement. Ces scripts doivent provenir de la compilation et définir les variables d'environnement et les fonctions shell utilisées lors de la compilation.

Zsh ne peut pas source ces fichiers, et si j'essaie d'émettre emulate bashmon shell devient non fonctionnel avec beaucoup de ces erreurs à chaque fois que je frappe l'espace (j'utilise oh-my-zsh, c'est peut-être une cause?):

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

Existe-t-il un moyen pour moi de ne pas basculer vers bash pour évaluer ces fichiers, ou d'appeler une instance bash et d'importer les nouvelles variables / fonctions d'environnement qu'elle a définies lors de l'approvisionnement dans ma session zsh? Ou je suis condamné à passer à bash chaque fois que je dois travailler sur Android?

EDIT : trouvé une réponse à ma propre question. Le sourcing d'un fichier à l'aide d'un autre shell ne semble pas possible, mais en cas d'échec des fichiers de macro Android, cette page a apporté un correctif:

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

Fondamentalement, la simple configuration unsetopt nomatchdemandera à zsh de cesser de se plaindre des caractères génériques inégalés, ce qui est suffisant pour compléter les scripts. Il restera une erreur, concernant l'utilisation de la completecommande interne bash pour ajouter des capacités de complétion à une macro Android, mais ce n'est absolument pas critique ici.

Réponses:


4

Vous pouvez placer votre ligne de commande de compilation dans un script bash, qui source les scripts de compilation avant d'exécuter la commande de compilation.

Quelque chose comme

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

    compile_command

Ensuite, au lieu d'invoquer compile_commandmanuellement, vous appelez simplement votre nouveau script bash.


C'est une solution potentielle, mais malheureusement, les scripts d'environnement prennent plusieurs secondes et la commande de compilation varie beaucoup. Je ne peux donc pas compter sur cela pour travailler quotidiennement.
Gnurou
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.