./bla.sh
Aqui, o comando é ./bla.sh
. Isso faz com que o shell procure por um executável chamado bla.sh
no diretório atual e, em seguida, peça ao kernel para executá-lo como um programa normal, em um processo separado do shell. (Não importa se bla.sh
é um script bash
, um perl
ou python
one ou um binário compilado.)
. bla.sh
Aqui, o comando é .
(também conhecido como source
), um comando interno do seu shell. Faz o shell procurar por um arquivo chamado bla.sh
no caminho do sistema ($ PATH) e interpretar o conteúdo como se ele fosse digitado por você; Tudo isso é feito no mesmo processo como o próprio shell (e, portanto, pode afetar o estado interno do shell).
Isso, é claro, só funciona quando bla.sh
contém comandos para o bash
shell (se esse é o que você está usando atualmente), não funcionará para perl
scripts ou qualquer outra coisa.
(Isso é explicado em help .
e help source
também.)
Como .
e ./
são coisas completamente diferentes (um comando versus parte de um caminho), eles podem ser combinados, é claro - usar . ./bla.sh
iria "originar" um arquivo bla.sh
no diretório atual .
Normalmente, é melhor usar o método ./bla.sh
. Somente ~/.bashrc
, ~/.profile
e tais arquivos são geralmente originados, porque eles devem modificar o ambiente atual.