Usando os comandos source vs bash

2

test.sh

mkdir test
echo 
echo 

Parece que seguir dois comandos fazem as mesmas coisas. Eles são os mesmos? Se não, como eu poderia alterar meu exemplo para mostrar a diferença?

cat test.sh | bash -s hi bye
source test.sh hi bye
    
por countunique 10.06.2013 / 19:10

1 resposta

4

A diferença será se você estiver tentando alterar o ambiente do seu shell atual (por exemplo, definir um shell ou uma variável de ambiente). Por exemplo

$ cat test.sh
myVariable=foo
$ unset myVariable; source test.sh; echo ${myVariable:-null}
foo
$ unset myVariable; bash -s < test.sh; echo ${myVariable:-null}
null

É para isso que o source : avalia um script no shell atual. Quando você inicia um novo processo bash, ele não pode alterar o ambiente do processo pai.

    
por glenn jackman 10.06.2013 / 20:13