A expansão do arquivo deve acontecer antes que um comando veja seu argumento?

0

No Bash, dado um comando que usa um nome de caminho como argumento, a expansão do arquivo acontece no argumento do caminho antes que o comando possa ver o valor desse argumento?

Minha pergunta vem de meu comentário sobre o que . se refere nos seguintes comandos git:

git --git-dir=/path/to/my/repo/.git add .
git --work-tree=/a/path --git-dir=/path/to/my/repo/.git add .
git -C /path/to/my/repo add .

A resposta à qual meu comentário responde e os comentários a seguir dizem que . nem sempre significa o diretório onde eu corro o comando. Mas eu não entendo, porque acho que a expansão do arquivo acontece antes que o comando possa ver o valor do argumento.

    
por Tim 28.12.2015 / 19:21

1 resposta

4

Todas as expansões ocorrem antes do comando ser executado. O modo como o comando interpreta o que é obtido depende inteiramente dele. Nenhum de seus comandos de exemplo tem nenhuma expansão envolvida - . não é expandido pelo shell.

O comando git usa . depois de alterar os diretórios de acordo com suas opções, então . não será seu diretório atual. Nem tar arquivará meu diretório atual no seguinte comando:

tar -C etc -c .
    
por 28.12.2015 / 19:27

Tags