Does export move the variable abc from shell to the environment OR does it create a copy in the environment and assign it a new value ?
Nem export
simplesmente marca uma variável para exportação.
Quando um comando externo é executado, o shell cria um ambiente para passar para ele. Apenas variáveis marcadas para exportação são adicionadas a esse ambiente. Como man bash
explica:
shell variables and functions marked for export, along with variables exported for the command, [are] passed in the environment
Observe que env
é um comando externo . Consequentemente, só pode relatar variáveis que foram exportadas.
Significado de "variáveis exportadas para o comando"
As atribuições de variáveis normais têm persistência: a variável existe até ser removida (não configurada). Também é possível criar variáveis temporárias para uso por um comando específico.
Como exemplo, vamos criar uma variável a
para uso pelo comando env
:
$ a=b env | grep ^a=
a=b