O que faz. .bashrc realmente faz?

13

Quando eu digito um ex. um novo alias no meu arquivo .bashrc Eu não posso usá-lo nessa janela do terminal imediatamente e até recentemente eu pensei que tinha que reiniciar o terminal para recarregar o arquivo .bashrc . Então eu descobri em algum lugar que se eu escrever

. .bashrc

isso recarregará o arquivo .bashrc na janela atual e não preciso reiniciar. Isso funciona, mas o que realmente está acontecendo? Por que isso recarrega o arquivo .bashrc ?

    
por Spade 14.03.2014 / 10:18

3 respostas

17

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

por 14.03.2014 / 10:57
1

help . diria a você:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Dizer que . .bashrc executa (origina) o arquivo .bashrc , o que torna as alterações feitas no arquivo disponíveis na sessão atual.

Por padrão, ~/.bashrc seria lido no login.

. é sinônimo de source .

    
por 14.03.2014 / 10:23
1

O comando . é a mesma coisa que o comando source , que executa o arquivo .bashrc . Isso adiciona todos os aliases que você definiu e quaisquer outras configurações / variáveis do shell no ambiente atual. Da página de ajuda de source :

source: source filename [arguments]
    Execute commands from a file in the current shell.
    
por 15.03.2014 / 16:19