Pergunta

Aqui está um quebra -cabeças: alguém pode explicar por que cd falha quando a saída é redirecionada para um tubo?

Por exemplo:

james@machine:~$ cd /tmp                          # fine, no problem
james@machine:~$ cd /tmp | grep 'foo'             # doesn't work
james@machine:~$ cd /tmp | tee -a output.log      # doesn't work
james@machine:~$ cd /tmp >out.log                 # does work

Verificado no OSX, Ubuntu e Rhel.

Alguma ideia?

EDITAR: Parece estranho que eu esteja canalizando a saída de cd? O motivo é que é de uma função que envolve comandos de shell arbitrários com entradas de log e lidando com a saída.

Foi útil?

Solução

Quando você redireciona a saída, ele gera um processo infantil, altera o diretório no processo filho e sai. Quando você não redireciona a saída, ela não gera nenhum novo processo porque é um comando Shell embutido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top