¿Cómo 'fuente' un script de shell usando bash de zsh?


14

Estoy usando zsh y me gusta mucho, pero trabajo mucho con la fuente de Android que tiene scripts de compilación que requieren que bash se evalúe correctamente. Estos scripts deben obtenerse antes de la compilación y definir variables de entorno y funciones de shell que se utilizan durante la compilación.

Zsh no puede obtener estos archivos, y si trato de emitir emulate bashmi shell deja de funcionar con muchos de estos errores cada vez que presiono el espacio (estoy usando oh-my-zsh, ¿tal vez es una causa?):

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

¿Hay alguna forma de no cambiar a bash para evaluar estos archivos o invocar una instancia de bash e importar las nuevas variables / funciones de entorno que definió durante el abastecimiento en mi sesión zsh? ¿O estoy condenado a cambiar a bash cada vez que necesito trabajar en Android?

EDITAR : encontré una respuesta a mi propia pregunta. No parece posible obtener un archivo utilizando otro shell, pero en el caso de que falle la macro de Android, esta página trajo una solución:

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

Básicamente, la configuración simple unsetopt nomatchle pedirá a zsh que deje de quejarse de comodines inigualables, lo cual es suficiente para completar los scripts. Todavía habrá un error restante, sobre el uso del completecomando interno bash para agregar capacidades de finalización a una macro de Android, pero aquí no es absolutamente crítico.

Respuestas:


4

Puede poner su línea de comandos de compilación en un script bash, que genera los scripts de compilación antes de ejecutar el comando de compilación.

Algo como

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

    compile_command

Luego, en lugar de invocar compile_commanda mano, simplemente invocas tu nuevo script bash.


Esa es una solución potencial, pero desafortunadamente los scripts de entorno tardan varios segundos en completarse y el comando de compilación varía mucho. Por lo tanto, no puedo confiar en que esto funcione a diario.
Gnurou
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.