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.

È stato utile?

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
scroll top