2012-10-08 3 views
1
$ foobar 
sh: foobar: not found 
$ foobar 2>/dev/null 
$ 

foobar의 stderr 만 리디렉션하려고합니다 (foobar가 있고 실행할 수있는 경우). 그러나 쉘의 오류 메시지도 리디렉션됩니다. 이것은 bash, ksh 및 sh에서 발생하지만 csh에서는 발생하지 않습니다. 필자는 bourne shell 소스 코드에 익숙하지 않지만, 쉘이 먼저 fork하고, 리다이렉트하고, exec()를 시도하기 때문에 exec()가 실패하면 이미 리디렉션 된 stderr에 에러 메시지를 보냅니다."명령을 찾을 수 없습니다."메시지도 리디렉션됩니다.

+1

, 2>는/dev/null로 그것을 캡처합니다. 셸 오류 코드를 사용하여 cmd가 발견되었는지 확인하십시오. 일반적으로 cmd-not-found를 나타내려면 127입니다. 포크/리디렉션/exec에 대한 좋은 질문이지만 답을 모른다. S.O. 학생들 자신의 껍질을 쓰는 학생들로부터 가끔 주문이나 fork/exec/redirect를 명시 적으로 해주는 답이 있습니다. 행운을 빕니다. – shellter

답변

0

는 foobar 인 경우 일부는 다음 시도 실행 : - 당신이 실제로 표준 에러 메시지를 생성하는는 foobar이있을 때

$ ./foobar 
sh: foobar: not found 
$ ./foobar 2>/dev/null #alternatively you can use full path. 
$ 
관련 문제