Variáveis ​​de ambiente não são definidas quando redirecionam o eco através de um pipeline em uma função

Variáveis ​​de ambiente não são definidas quando redirecionam o eco através de um pipeline em uma função

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.

informação relacionada