Uma barra invertida fora das aspas significa "interpretar o próximo caractere literalmente durante a análise". Como .
é um caractere comum para o analisador, \.
é analisado da mesma maneira que .
e invoca o builtin .
(do qual source
é um sinônimo no bash).
Há um caso em que isso pode fazer diferença neste contexto. Se um usuário definiu um alias chamado .
anterior em .profile
e .profile
está sendo lido em um shell que expande aliases (que o bash só faz por padrão quando é invocado interativamente), então .
acionaria o alias, mas \.
ainda acionaria o builtin, porque o shell não tenta expansão de alias em palavras que foram citadas de alguma forma.
Eu suspeito que .
foi alterado para \.
porque um usuário reclamou depois que eles criaram um alias para .
.
Observe que \.
invocaria uma função chamada .
. Presumivelmente, os usuários que escrevem funções são mais bem informados do que os usuários que escrevem aliases e sabem que redefinir um comando padrão em .profile
é uma má idéia se você incluir código de terceiros. Mas se você quisesse ignorar os aliases e as funções, poderia escrever command .
. O autor deste trecho de código também não fez isso porque se importava com os shells antigos que não tinham o command
incorporado ou, mais provavelmente, porque eles não sabiam disso.
A propósito, definir qualquer alias em .profile
é uma má idéia porque .profile
é um script de inicialização session , não um shell script de inicialização. Aliases para bash pertencem a .bashrc
.