
Este comando:
echo '18' | source meta-cmf-raspberrypi/setup-environment
Não defina as variáveis de ambiente como aconteceu simplesmente:
source meta-cmf-raspberrypi/setup-environment
Com "18" na entrada.
A pergunta no link:Variáveis de ambiente não são definidas quando minha função é chamada em um pipeline
Não resolvo meu problema porque tentei:
echo '18' > >(source meta-cmf-raspberrypi/setup-environment)
Sem sucesso. Como faço para resolver o problema?
Responder1
No pipeline, o script está sendo originado em um ambiente separado. Da mesma forma no exemplo de substituição de processo. Isso significa que as variáveis definidas no script são definidas em um ambiente filho para o shell de chamada. As alterações em um ambiente filho nunca podem ser propagadas para o ambiente pai.
Você poderia resolver isso de duas maneiras, evitando adquirir o script em um ambiente separado.
A primeira maneira funcionaria em um shell que entendesse "here-strings":
source meta-cmf-raspberrypi/setup-environment <<<18
A segunda maneira é usar um documento aqui padrão:
source meta-cmf-raspberrypi/setup-environment <<END_INPUT
18
END_INPUT
Em ambas as variações, o script é originado no ambiente atual, com sua entrada redirecionada da string aqui/documento aqui.