O comando .
é um shell embutido. Ele executa o shell script que você fornece como argumento, mas dentro do seu ambiente shell atual. Isso também é chamado de "fornecimento" de um script. No Bash, source
é, portanto, um sinônimo de .
(mas, por exemplo, não em sh
ou no padrão POSIX). Veja também Qual é a diferença entre "source" e "."?
O fornecimento de um script (como . ~/.bashrc
) é diferente de executar um script regularmente (como ~/.bashrc
), pois, se você executá-lo normalmente, ele será executado dentro de um sub-shell em vez do ambiente atual do shell.
Um sub-shell tem seu próprio diretório de trabalho, opções de shell e variáveis locais, de modo que alterá-las dentro do script (por exemplo, usando cd
ou configurando / alterando variáveis) não afeta o shell pai. Se você executar um script, ele também obterá acesso de leitura somente às variáveis locais do shell pai, que ele export
ed, não as regulares.
Se você quiser permitir que o script modifique seu ambiente atual (por exemplo, para alterar as opções do shell, definir variáveis de ambiente, criar aliases e funções que você possa usar, etc), que é o caso de .bashrc
, para obtê-lo. Se você acabou de executá-lo, todas as alterações serão perdidas assim que ele sair e retornar ao seu ambiente de shell.
Mais informações podem ser obtidas executando help .
ou help source
e man bash
(seção sobre built-ins do shell) .