Porque .
é um comando.
É um comando interno do shell, que lê o arquivo nomeado e executa os comandos nele no processo shell atual.
O shell Bourne Again também possui source
como sinônimo desse comando. Mas este é um Bashism (que o shell Bourne Again tirou da Shell C). Embora seja um Bashism que o shell Bourne Again compartilhe com o TENEX C Shell, o Z Shell, e outros (mas não o shell Korn, note). A única especificação do UNIX padroniza apenas .
.
Observe também que o comportamento de .
/ source
sutilmente depende de se o shell Bourne Again está sendo executado em seu modo compatível com POSIX ou não. (Novamente, isso é como outros shells, embora seus comportamentos não padrão não sejam iguais aos do outro. Com o Z Shell, por exemplo, existe um mecanismo de script de shell pré-compilado e source
sutilmente difere de .
em seu shell. manipulação do caminho de busca. O .
do shell Korn irá executar as funções do shell, para outro exemplo.)
~/.bashrc
é meramente um dos vários arquivos cujo conteúdo é (dependente de como o processo do shell é invocado) automaticamente originado na inicialização do shell. Não há nada que o proíba de ser manualmente originado. Embora, se suas ações não forem idempotentes, talvez você tenha algum trabalho de correção para fazer depois.
Leitura adicional
- "Utilitários internos especiais: ponto" . Linguagem de comando do shell . Única especificação do UNIX. Questão 6 IEEE 1003.1. 2013. O Grupo Aberto.
- bashisms . O wiki do Greg.
- "Bourne shell builtins" . Manual de Referência do Bash . Fundação de Software Livre.
- "Bash builtins" . Manual de Referência do Bash . Fundação de Software Livre.
- "Arquivos de inicialização do bash" . Manual de Referência do Bash . Fundação de Software Livre.
- Qual é a diferença entre a execução de um script Bash e sua origem?