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 ).