Pregunta

Aquí hay un rompecabezas: ¿alguien puede explicar por qué cd falla cuando la salida se redirige a una tubería?

Por ejemplo:

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 en OSX, Ubuntu y RHEL.

¿Alguna idea?

EDITAR : ¿Parece extraño que esté canalizando la salida de cd ? La razón es que proviene de una función que envuelve comandos de shell arbitrarios con entradas de registro y se ocupa de la salida.

¿Fue útil?

Solución

Cuando redirige la salida, genera un proceso de shell hijo, cambia el directorio en el proceso hijo y sale. Cuando no redirige la salida, no genera ningún proceso nuevo porque es un comando de shell incorporado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top