cd no funciona al redirigir la salida?
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.
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