O que . .bashrc realmente faz?

13

Quando eu insiro um exemplo. um novo alias no meu .bashrcarquivo 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 .bashrcarquivo. Então eu descobri em algum lugar que se eu escrever

. .bashrc

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


fonte
1
Com ., você "origina" o arquivo. O que significa que está sendo executado basicamente
Der Hochstapler
possível duplicata de O que a fonte faz?
Dan D.
1
@DanD. embora a resposta seja a mesma, a pergunta me parece bastante distinta.
Calimo 14/03
1
@ Dan D. esta questão é mais sobre a mening de . . Até agora eu sempre pensei nisso . como atalho para o diretório atual e .. como atalho para o diretório pai. Eu nunca percebi . era um apelido para a fonte (que por sua vez era um conceito completamente novo para mim). Se alguém vier aqui e quiser saber a diferença, encontrei Qual é a diferença entre executar um script bash e obter um script bash? ser muito prestativo.
Spade

Respostas:

17

Porque .é um comando.

É um comando interno do shell, que lê o arquivo nomeado e executa os comandos no processo atual do shell.

O shell Bourne Again também tem sourcecomo sinônimo esse comando. Mas isso é um Bashism (que o shell Bourne Again retirou do C Shell). Embora seja um bashismo que o shell Bourne Again compartilhe com o shell TENEX C, o shell Z e outros (mas não o shell Korn, observe). A Especificação Única UNIX apenas padroniza ..

Observe também que o comportamento de ./ sourcesutilmente muda dependendo de o shell Bourne Again estar sendo executado no modo compatível com POSIX ou não. (Novamente, isso é como outras conchas, embora seus comportamentos não-padrão não sejam os mesmos. Com o Z Shell, por exemplo, existe um mecanismo de script de shell pré-compilado, e sourcedifere sutilmente .no tratamento de caminhos de pesquisa. Os shell .executarão funções shell, por outro exemplo.)

~/.bashrcé apenas um dos vários arquivos cujo conteúdo (dependendo de como o processo do shell é chamado) é originado automaticamente na inicialização do shell. Não há nada que proíba a fonte manual . Embora se suas ações não forem idempotentes, você poderá ter algum trabalho de correção posteriormente.

Leitura adicional

JdeBP
fonte
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.

Dizendo . .bashrcexecuta (origens) o arquivo .bashrcque disponibiliza as alterações feitas no arquivo na sessão atual.

Por padrão, ~/.bashrcseria lido no login.

.é um sinônimo para source.

devnull
fonte
1

O .comando é o mesmo que o sourcecomando, que executa seu .bashrcarquivo. Isso adiciona todos os aliases que você definiu e quaisquer outras configurações / variáveis ​​do shell no ambiente atual. Na sourcepágina de ajuda de:

source: source filename [arguments]
    Execute commands from a file in the current shell.
ethanwu10
fonte