출력을 리디렉션 할 때 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