Вопрос

Вот головоломка:может кто-нибудь объяснить, почему 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?Причина в том, что это функция, которая оборачивает произвольные команды оболочки в записи журнала и обрабатывает выходные данные.

Это было полезно?

Решение

Когда вы перенаправляете вывод, он порождает дочерний процесс оболочки, меняет каталог в дочернем процессе и завершает работу.Если вы не перенаправляете вывод, он не запускает новый процесс, поскольку это встроенная команда оболочки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top