터미널에 다음을 입력했습니다
$ musique
The program 'musique' is currently not installed. You can install it by typing:
sudo apt-get install musique
우분투는 “musique”가 현재 컴퓨터에 설치되어 있지는 않지만 프로그램이라는 것을 알고 있습니다. 그러나 내가 입력하면
$ musiquez
No command 'musiquez' found, did you mean:
Command 'musique' from package 'musique' (universe)
“musiquez”라는 프로그램이 없다는 것을 알고 있습니다.
내 질문은 우분투가 이것을 어떻게 알 수 있습니까? 이 정보는 Ubuntu에 설치할 수있는 응용 프로그램에 대한 어디에 저장됩니까?
답변
이 기능은 명령을 찾을 수없는 명령 에 의해 제공됩니다 (이 기능은 잘못 입력하는 경우 대안 및 수정을 제안하는 것입니다). 우분투는 기본적으로 설치합니다.
어떻게 작동합니까?
작동 방식은 command_not_found_handle()
bash 의 기능 을 사용하는 것입니다. bash는 기본적으로 명령을 찾을 수 없을 때 호출되는 함수 인 후크를 제공합니다.
궁금한 점이 있으면 /usr/lib/command-not-found
파일을 열고 스크립트를 살펴보십시오. 파이썬 모듈 CommandNotFound를 사용하여 작동합니다.
답변
패키지의 쌍 command-not-found
과 command-not-found-data
,이 기능의 작품을 만드는 것입니다.
command-not-found
단순히 command_not_found_handle()
bash 함수 의 핸들러입니다 . 에서 제공하는 명령과 패키지 간의 매핑에 대한 데이터를 검색합니다 command-not-found-data
.