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
...