. como um argumento de linha de comando para um comando em execução no plano de fundo

0

Eu corro grep some-string -r . & . Enquanto ele está rodando em bkg, eu cd para outro diretório. Parece que grep interpreta o link físico . diferentemente então. O que acontece antes e depois de eu mudar o diretório atual? Os diretórios original e novo não serão pesquisados completamente?

Gostaria de saber se . como um argumento de linha de comando para um comando é apenas desreferenciado no início da execução do comando ou se é desreferenciado sempre que for usado pelo programa durante sua execução?

    
por Tim 20.03.2015 / 20:15

1 resposta

2

Cada processo tem seu próprio "diretório de trabalho atual", que não pode ser alterado de fora do processo.

Então quando você faz

grep some-string -r . &

seu shell inicia grep em segundo plano, e o diretório de trabalho atual de grep é inicializado com o mesmo valor que o shell naquele momento . A definição de grep de . aqui é seu próprio diretório atual, e não qualquer outra coisa; a concha não tem parte na interpretação do argumento.

Posteriormente, alterar o diretório do shell usando cd não tem impacto em grep ...

    
por 20.03.2015 / 20:20