Você pode pedir ajuda a bash
para responder a essas perguntas usando set -x
. Este sinalizador diz ao bash para exibir o comando e seus argumentos expandidos antes de executá-lo:
Primeiro, alguma configuração:
$ a=some-value
$ b=some-other-value
$ set -x
Agora vamos ver como o shell interpreta esses comandos:
$ a=b
+ a=b
O valor da variável a
está sendo definido para a string literal "b".
Agora vamos tentar $b
:
$ a=$b
+ a=some-other-value
Aqui dizemos ao shell para avaliar $b
e inserir o valor de b
no comando.
Isso mostra um pouco do valor do shell - ele interpreta variáveis e curingas em vez de fazer com que comandos individuais executem o trabalho. Por exemplo, ls
não precisa saber como interpretar "* .txt" porque o shell faz o trabalho antes de ls
ser iniciado:
$ ls *.txt
+ ls a.txt b.txt c.txt
a.txt b.txt c.txt