Eu aprendi recentemente que
. ./.a.a
e ./.a.a
é o mesmo.
No entanto, tentar source source .a.a
dá um erro. Na IMO, .
ser o apelido de Bash source
não deve se comportar de maneira diferente, então o que estou perdendo?
Bônus, por que está tudo . .
bem enquanto source source
não está?
. script
e./script
é a mesma coisa? Eles certamente não são . Além disso,.
não é um alias parasource
. É o contrário..
é o padrão esource
é um alias de.
..
comando, mas quero dizer quesource
é apenas um comando melhor, quando você vêsource somefile
em um script imediatamente saber o que essa declaração faz, mas. somefile
não apenas não é óbvio o que faz, você pode facilmente perder o.
caráter completamentebash: .: .: is a directory
na. .
é necessidades ok para ser explicadas.. ./.a.a .
para ser honesto. : -DA questionário das sortes, se preferir. :-) A pergunta vinculada é incrível, muito obrigado. O que me deu essa idéia: o fato de eu não ter visto diferença na execução de arquivos dessa maneira e o fato de ler em algum lugar.
é um pseudônimosource
. :-)Respostas:
Você não pode simplesmente substituir
.
porsource
todos os lugares; E sefunciona, você pode substituir o primeiro
.
(pelo menos no Bash):O segundo
.
representa o diretório atual, você não pode substituir isso comsource
(especialmente não./
comsource
como você fez).seria bom se você tivesse um arquivo chamado
source
no diretório atual, contendo algo significativo para o seu shell atual. Eu não consigo ver como. .
seria bom ...Além disso,
. ./.a.a
e./.a.a
não é o mesmo, o segundo formulário é executado.a.a
em um shell separado. Consulte Qual é a diferença entre sourcing ('.' Ou 'source') e executar um arquivo no bash? para detalhes.fonte
source
é uma palavra-chave do shell que deve ser usada assim:source
file
wherefile
contém comandos válidos do shell. Esses comandos do shell serão executados no shell atual como se digitados na linha de comando. Agora,.
file
faz exatamente o mesmo.Além disso
.
, significa "o diretório de trabalho atual" como em./xyz
("xyz
neste diretório") oua/b/./c/./d
(que é idêntico aa/b/c/d
).Além disso
.
, um nome de arquivo tem um significado apenas por convenção, pois.foobar
indica um arquivo "oculto" (na verdade não ...) ou comofoobar.pdf
indica um formato de arquivo pelo sufixo (aqui.pdf
).Esses significados diferentes não podem ser trocados.
fonte
.
não está desatualizado. Diferentementesource
do portátil, e definida pelo POSIX de obter um arquivo. Osource
alias é específico do shell e pode estar ausente (por exemplo, emdash
) ou se comportar de maneira diferente do padrão.
.