$에서 반환 값 127의 의미는 무엇입니까? 유닉스에서.
$에서 반환 값 127의 의미는 무엇입니까? 유닉스에서.
답변:
/bin/sh
주어진 명령이 PATH
시스템 변수 내에 없고 내장 쉘 명령 이 아닌 경우 값 127이 리턴됩니다 . 다시 말해, 시스템은 호출하려는 바이너리를 어디에서 찾을 지 모르기 때문에 명령을 이해하지 못합니다.
which [program]
OS가 사용중인 바이너리를 확인하기 위해 사용할 수 있습니다 . 비어 있으면 다음 단계는 실행 비트와 PATH를 확인하는 것입니다.
which
는 특히 정확하지는 않습니다. 별칭, 셸 함수, PATH 조회 메모 또는 셸 상태 내부의 다른 요소에 대해서는 알지 못합니다. type
셸 을 사용 하는 것이 훨씬 낫습니다 .
126
( 내용에 관계없이) 실행 불가능한 파일을 호출하려고 할 때가 Permission denied
아니라 ( )를 얻습니다 127
. 이와 유사하게, 실행하기 위해 디렉토리 도 결과 126
( is a directory
).
쉘 규약은 성공적인 실행 파일은 값 0으로 종료해야한다는 것입니다. 다른 모든 것은 bash 또는 방금 실행 한 실행 파일의 일부에서 일종의 실패로 해석 될 수 있습니다. 참조 $ PIPESTATUS 과 종료 상태 bash는 남자 페이지의 섹션 :
For the shell’s purposes, a command which exits with a zero exit status has succeeded. An exit status of zero indicates success. A non-zero exit status indicates failure. When a command terminates on a fatal signal N, bash uses the value of 128+N as the exit status.
If a command is not found, the child process created to execute it returns a status of 127. If a com-
mand is found but is not executable, the return status is 126.
If a command fails because of an error during expansion or redirection, the exit status is greater than
zero.
Shell builtin commands return a status of 0 (true) if successful, and non-zero (false) if an error
occurs while they execute. All builtins return an exit status of 2 to indicate incorrect usage.
Bash itself returns the exit status of the last command executed, unless a syntax error occurs, in
which case it exits with a non-zero value. See also the exit builtin command below.
이 오류는 때때로 속고 있습니다. 실제로 파일이 있어도 파일을 찾을 수 없습니다. 사용중인 편집기로 인해 파일에 읽을 수없는 읽을 수없는 특수 문자가있을 수 있습니다. 이 경우이 링크가 도움이 될 수 있습니다.
-bash : ./my_script : / bin / bash ^ M : 잘못된 인터프리터 : 해당 파일 또는 디렉토리가 없습니다.
이 문제인지 확인하는 가장 좋은 방법은 전체 파일에 echo 문을 간단히 배치하고 동일한 오류가 발생하는지 확인하는 것입니다.