Um software que instalei inseriu uma linha no meu perfil que diz:
[ -s "$SOME_FILE" ] && \. "$SOME_FILE"
Eu sei que dot .
é sinônimo de source
, então suspeito que isso seja apenas fonte do arquivo, mas nunca vi \.
antes; faz outra coisa?
Edit, sobre DVs: pesquisar por "ponto de barra invertida" leva a perguntas sobre ./
quando chamar arquivos executáveis e man source
leva a uma página de manual onde \.
não aparece. Não sei mais o que tentar, daí a pergunta.
Edit 2: veja as perguntas relacionadas
Uma barra invertida fora das aspas significa “interpretar o próximo caractere literalmente durante a análise”. Desde que
.
é um caractere comum para o analisador,\.
é analisado da mesma maneira que.
, e invoca o builtin.
(do qualsource
é um sinônimo no bash).Há um caso em que poderia fazer a diferença neste contexto. Se um usuário definiu um alias chamado
.
anteriormente em.profile
, e.profile
está sendo lido em um shell que expande aliases (o 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.Suspeito que
.
foi alterado para\.
porque um usuário reclamou depois de criar um alias para.
.Observe que
\.
invocaria uma função chamada.
. Presumivelmente, os usuários que escrevem funções são mais experientes do que os usuários que escrevem aliases e saberiam que redefinir um comando padrão.profile
é uma má ideia se você incluir código de terceiros. Mas se você quisesse ignorar tanto aliases quanto funções, você poderia escrevercommand .
. O autor deste trecho não fez isso porque eles se importavam com conchas antigas que não tinham ocommand
built-in, ou mais provavelmente porque não estavam cientes disso.A propósito, definir qualquer alias em
.profile
é uma má ideia porque.profile
é um script de inicialização de sessão , não um script de inicialização de shell . Os aliases para bash pertencem a.bashrc
.O
\.
é um "ponto literal", ou seja, apenas um ponto. Será tomado como o.
comando padrão (semelhante asource
embash
).O padrão POSIX tem isso a dizer sobre isso (minha ênfase)
O caractere ponto pode ser alias:
o que significa que
\.
evitaria usar a versão com alias do.
comando, porque ,