Por que foo = bar é diferente de foo = bar? [duplicado]

3

Qual é a interpretação do espaço em branco neste comando foo= bar ?

Por que foo=bar e foo= bar são interpretados de maneira diferente

Exemplo (bash do Ubuntu)

developer@1604:~$ foo=bar
developer@1604:~$ foo= bar
The program 'bar' is currently not installed. You can install it by typing:
sudo apt install bar
    
por Niklas Rosencrantz 16.08.2017 / 09:15

4 respostas

10

Esta é a sintaxe: As variáveis de bash são iniciadas com o valor que segue imediatamente após o operador de atribuição = . Isso é simplesmente o jeito que é ...

Quando você executa foo= bar , está atribuindo uma string vazia à variável foo e, em seguida, executa o comando bar .

    
por 16.08.2017 / 09:30
4

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

    
por 16.08.2017 / 10:19
2

foo= bar : antes de executar o comando bar , atribua foo para vazio. A maneira correta é foo=bar sem espaço após o nome da variável e o valor atribuído.

    
por 16.08.2017 / 09:57
2

No comando shell linux / unix, ao digitar foo=bar , você coloca a barra de string na variável foo . Para verificar, você pode digitar echo $foo , que deve retornar bar , isto é o que a variável foo contém

Quando você digitar foo= bar com o espaço, o interpretador de shell não colocará nada, na variável foo e na barra de manuseio como um comando de aplicativo através da variável PATH. Como o shell não encontrou o comando bar na variável PATH e você está usando a distribuição do Ubuntu, o sistema está perguntando se você deseja instalar o aplicativo da barra. É apenas uma mensagem pop-up quando a sua aplicação não é encontrada. Você pode verificar a variável PATH com este comando: echo $PATH . Mais informações sobre essa variável de sistema

    
por 16.08.2017 / 09:45