
Estoy usando zsh y me gusta mucho, pero trabajo mucho con fuentes de Android que tienen 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 intento ejecutar emulate bash
mi shell deja de funcionar con muchos de estos errores cada vez que presiono el espacio (estoy usando oh-my-zsh, ¿tal vez esa sea la causa?):
url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*
¿Hay alguna manera de no cambiar a bash para evaluar estos archivos, o de invocar una instancia de bash e importar las nuevas variables/funciones de entorno que definió durante el abastecimiento en mi sesión de 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 usando otro shell, pero en el caso de que los archivos de macro de Android fallen, esta página ofrece una solución:
http://nilvec.com/building-cyanogen-from-source/
Básicamente, simplemente configurar unsetopt nomatch
le pedirá a zsh que deje de quejarse de comodines no coincidentes, lo cual es suficiente para completar los scripts. Aún quedará un error sobre el uso del complete
comando interno bash para agregar capacidades de finalización a una macro de Android, pero no es en absoluto crítico aquí.
Respuesta1
Puede colocar su línea de comando 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_command
manualmente, simplemente invoca su nuevo script bash.