CD não funciona ao redirecionar a saída?
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.
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