Question

Voici un casse-tête: quelqu'un peut-il expliquer pourquoi cd échoue lorsque la sortie est redirigée vers un tuyau?

Exemple:

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

Vérifié sur OSX, Ubuntu et RHEL.

Des idées?

MODIFIER : il est étrange que je siffle la sortie de cd ? La raison en est que cela provient d'une fonction encapsulant des commandes shell arbitraires avec des entrées de journal et traitant de la sortie.

Était-ce utile?

La solution

Lorsque vous redirigez la sortie, un processus de shell enfant se crée, modifie le répertoire dans le processus enfant et se ferme. Lorsque vous ne redirigez pas la sortie, cela ne génère aucun nouveau processus car il s'agit d'une commande shell intégrée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top