cd non funziona quando si reindirizza l'output?
Domanda
Ecco un enigma: qualcuno può spiegare perché cd
fallisce quando l'output viene reindirizzato a una pipe?
per esempio:.
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
Verificato su OSX, Ubuntu e RHEL.
Qualche idea?
MODIFICA : Sembra strano che stia eseguendo il piping dell'output di cd
? Il motivo è che proviene da una funzione che avvolge comandi shell arbitrari con voci di registro e gestisce l'output.
Soluzione
Quando si reindirizza l'output, genera un processo shell figlio, cambia la directory nel processo figlio ed esce. Quando non reindirizzi l'output, non genera alcun nuovo processo perché è un comando shell incorporato.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow