Como 'fonte' de um script de shell usando o bash do zsh?


14

Estou usando o zsh e gosto muito, mas trabalho muito com a fonte do Android, que possui scripts de compilação que exigem que o bash seja avaliado corretamente. Esses scripts precisam ser originados antes da compilação e definir variáveis ​​de ambiente e funções de shell que são usadas durante a compilação.

O Zsh não pode originar esses arquivos, e se eu tentar emitir emulate bashmeu shell se tornará não funcional com muitos desses erros toda vez que atingir o espaço (estou usando oh-my-zsh, talvez isso seja uma causa?):

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

Existe uma maneira de eu não mudar para o bash para avaliar esses arquivos ou invocar uma instância do bash e importar as novas variáveis ​​/ funções de ambiente definidas durante o fornecimento para a minha sessão zsh? Ou estou fadado a mudar para o bash sempre que preciso trabalhar no Android?

EDIT : encontrou uma resposta para minha própria pergunta. Não é possível obter um arquivo usando outro shell, mas, no caso de falha nos arquivos de macro do Android, esta página trouxe uma correção:

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

Basicamente, a simples configuração unsetopt nomatchsolicitará ao zsh que pare de reclamar sobre curingas inigualáveis, o que é suficiente para concluir os scripts. Ainda haverá um erro restante, sobre o uso do completecomando interno do bash para adicionar recursos de conclusão a uma macro do Android, mas não é absolutamente crítico aqui.

Respostas:


4

Você pode colocar sua linha de comando de compilação em um script bash, que origina os scripts de compilação antes de executar o comando de compilação.

Algo como

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

    compile_command

Em vez de invocar compile_commandmanualmente, basta invocar seu novo script bash.


Essa é uma solução em potencial, mas infelizmente os scripts do ambiente levam alguns segundos para serem concluídos e o comando compile varia muito. Portanto, não posso confiar nisso para trabalhar diariamente.
Gnurou
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.