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 .
(que source
é sinônimo no bash).
Há um caso em que isso pode fazer diferença nesse contexto. Se um usuário definiu um alias chamado .
anteriormente .profile
e .profile
está sendo lido em um shell que expande aliases (o que o bash somente faz por padrão quando é chamado de maneira interativa), .
ele acionaria o alias, mas \.
ainda assim ativaria o builtin, porque o shell não tenta a expansão de alias em palavras que foram citadas de qualquer forma.
Eu suspeito que isso .
foi alterado para \.
porque um usuário reclamou depois de criar um alias para .
.
Observe que \.
chamaria uma função chamada .
. Presumivelmente, os usuários que escrevem funções têm mais conhecimento do que os usuários que escrevem aliases e saberiam que redefinir um comando padrão .profile
é uma má idéia se você incluir códigos de terceiros. Mas se você quiser ignorar os aliases e as funções, poderá escrever command .
. O autor deste trecho também não fez isso porque se importava com conchas antigas que não tinham o command
interior, ou mais provavelmente porque não o conheciam.
A propósito, definir qualquer apelido .profile
é uma péssima idéia, porque .profile
é um script de inicialização da sessão , não um script de inicialização do shell . Aliases para bash pertencem a .bashrc
.
Gilles 'SO- parar de ser mau'
fonte