문제

여기에 퍼즐 러가 있습니다. 누구든지 이유를 설명 할 수 있습니까? 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