cd funktioniert nicht, wenn die Ausgabe umleiten?
Frage
Hier ist ein Rätsel: kann jemand erklären, warum cd
schlägt fehl, wenn der Ausgang an ein Rohr umgeleitet
Z. B:.
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
Bestätigt auf OSX, Ubuntu und RHEL.
Irgendwelche Ideen?
Bearbeiten : Scheinen seltsam, dass ich die Ausgabe von cd
bin kochend? Der Grund dafür ist, dass es aus einer Funktion beliebige Shell-Befehle mit Log-Einträgen Einwickeln und den Umgang mit Ausgabe.
Lösung
Wenn Sie die Ausgabe umleiten, laicht es ein Kind Shell-Prozess, ändert sich das Verzeichnis, in dem untergeordneten Prozess, und wird beendet. Wenn Sie nicht über die Ausgabe umleiten, macht es keinen neuen Prozess erzeugen, weil es ein eingebauter in Shell-Befehl ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow