cd не работает при перенаправлении вывода?
Вопрос
Вот головоломка:может кто-нибудь объяснить, почему cd
происходит сбой, когда вывод перенаправляется в канал?
Например.:
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
Проверено на OSX, Ubuntu и RHEL.
Есть идеи?
РЕДАКТИРОВАТЬ:Кажется странным, что я передаю вывод cd
?Причина в том, что это функция, которая оборачивает произвольные команды оболочки в записи журнала и обрабатывает выходные данные.
Решение
Когда вы перенаправляете вывод, он порождает дочерний процесс оболочки, меняет каталог в дочернем процессе и завершает работу.Если вы не перенаправляете вывод, он не запускает новый процесс, поскольку это встроенная команда оболочки.
Не связан с StackOverflow