O comando .
(que tem um sinônimo, source
, em bash
, mas não na maioria dos outros derivados do shell Bourne) lê o arquivo nomeado como parte do shell atual.
Considere:
$ cat test.sh
export ENVVAR="Welcome"
echo $ENVVAR
$ echo $ENVVAR
$ test.sh
Welcome
$ echo $ENVVAR
$ . test.sh
Welcome
$ echo $ENVVAR
Welcome
$
NB: Cheat 1: Eu suponho que test.sh
é executável. Batota 2: eu suponho que test.sh
está em um diretório em $PATH
.
Isso significa que as variáveis de ambiente definidas em test.sh
afetam o shell atual. Por contraste, a execução de um comando sem o .
não afeta o ambiente do shell atual. O mecanismo .
é usado quando .profile
e arquivos relacionados são lidos, por exemplo.
Observe que .
procura nomes simples (como test.sh
sem barra) no PATH, mas o arquivo só precisa ser legível; não precisa ser executável.