Quando você executa foo= bar
, você está atribuindo uma cadeia vazia à variável de ambiente foo
e, em seguida, executa o comando bar
. Pode ser usado para passar variáveis de ambiente para uma nova execução.
Por que é diferente
Espaço é o caractere delimitador (usado para separar as coisas): adicionar um espaço faz com que sejam duas coisas foo=
e bar
. O primeiro é uma tarefa, o segundo está dizendo bash para encontrar um arquivo e executá-lo. O primeiro é opcional, então você normalmente só verá o segundo. O segundo não é opcional: se você vê apenas uma atribuição, ela faz algo um pouco diferente, atribui a uma variável de shell (não uma variável de ambiente, a menos que precedida por export
).