명령 핸들을 찾을 수 없습니다. URL에 적용할 수 없습니다.

명령 핸들을 찾을 수 없습니다. URL에 적용할 수 없습니다.

URL 링크에 대해 command_not_found_handle을 설정하려고 합니다.

%> command_not_found_handle() { echo "OK"; }
%> aaaaa
OK
%> http://www.google.com
bash: http://www.google.com: No such file or directory

그러면 일반적인 입력에는 작동하지만 URL 링크에는 작동하지 않습니다. 어떤 아이디어가 있습니까?

답변1

URL은 하위 디렉터리를 포함하는 것으로 간주됩니다. 예를 들어 다음을 살펴보세요.

$ command_not_found_handle() { echo "OK"; }
$ aaa
OK
$ aaa/bbb
bash: aaa/bbb: No such file or directory
$ 

즉, 명령을 실행하면 작동하지만 슬래시가 포함된 명령을 실행하면 bbb폴더에서 작업을 수행 하려고 시도할 수 있습니다 aaa. URL에서도 동일한 일이 발생합니다. URL은 www.google.com디렉토리에서 명령을 실행하고 있다고 생각합니다 http:.

Bash 매뉴얼 페이지에서:

name이 쉘 함수도 아니고 내장 함수도 아닌 경우,슬래시를 포함하지 않습니다., bash는 PATH의 각 요소에서 해당 이름의 실행 파일이 포함된 디렉터리를 검색합니다. Bash는 실행 파일의 전체 경로 이름을 기억하기 위해 해시 테이블을 사용합니다(아래 SHELL BUILTIN COMMANDS 아래의 해시 참조). 해시 테이블에서 명령을 찾을 수 없는 경우에만 PATH의 디렉터리 전체 검색이 수행됩니다. 검색에 실패하면 쉘은 command_not_found_handle이라는 정의된 쉘 함수를 검색합니다. 함수가 존재하는 경우 함수는 원래 명령과 원래 명령의 인수를 인수로 사용하여 호출되며 함수의 종료 상태는 쉘의 종료 상태가 됩니다. 이 함수가 정의되지 않은 경우 쉘은 오류 메시지를 인쇄하고 종료 상태 127을 반환합니다.

내 강조.

관련 정보