O que é chamado quando você usa um subshell para garantir que as variáveis temporárias de um comando não sejam deixadas por perto?

0

Qual é a técnica chamada quando você quer que suas variáveis desapareçam depois de serem executadas em um subshell?

$ (lookForMe=wee && find -type d -name "${lookForMe}_*")
$ echo $lookForMe
$
    
por leeand00 16.05.2018 / 05:42

2 respostas

1

As variáveis do shell sempre pertencem ao shell atual. Quando você gera um subshell, é um shell diferente e, portanto, possui seu próprio conjunto de variáveis. No seu caso, você está executando o subshell usando (......) , então o bash organiza que o subshell inicialmente obtém uma cópia de todas as variáveis do shell pai, mas já está. Em particular, as mudanças nas variáveis não são copiadas quando a subshell termina, nem as variáveis criadas na subshell são devolvidas ao shell pai.

Esta não é uma técnica , mas é a forma como a linguagem bash é definida e, portanto, não faz muito sentido pedir um nome para isso.

A ideia tem alguma semelhança com o conceito de variáveis locais na maioria das linguagens de programação, então você pode ser tentado a nomear a exploração dessa propriedade "criando variáveis locais", mas eu estaria relutante em fazê-lo, porque ignora o fato de que, pelo menos no ponto de invocação do (...) , as variáveis das shells pai são usadas para inicializar as variáveis na subshell.

    
por 16.05.2018 / 07:31
1

Isso não tem um nome especial além de "executar coisas em um subshell". Está implícito que as alterações feitas no ambiente no subshell não são refletidas no ambiente do shell pai.

    
por 16.05.2018 / 08:32