"명령을 찾을 수 없습니다..." 제거

"명령을 찾을 수 없습니다..." 제거

터미널에 명령을 잘못 입력하면 다음 오류가 발생합니다.

bash: XX: command not found...

그 후에 프롬프트를 다시 사용하려면 기다리거나 키보드 인터럽트를 사용해야 합니다. 때때로 쉘이 나에게 몇 가지 명령을 설치하라고 제안하는데, 그것은 꽤 짜증나는 일이다.

이 지연을 없앨 수 있는 방법이 있나요?

답변 감사합니다

답변1

지연은 관습으로 인해 발생합니다.찾을 수 없는 명령 처리기귀하의 배포판에 의해 추가되었습니다. 일반적으로 시스템 전체 파일의 어딘가에 추가됩니다 /etc/bash.bashrc.

핸들러는 특정 이름을 가진 쉘 함수이므로 다음을 통해 비활성화하거나 재정의할 수도 있습니다.~/.bashrc(예: 시스템 전체 구성을 변경하고 싶지 않은 경우)

distro의 핸들러가 너무 느린 경우 간단히 unset -f함수를 제거( )하고 bash의 표준 동작으로 돌아갈 수 있습니다.

unset -f command_not_found_handle

반면에 마음에 들지 않는다면메시지, 그러면 핸들러의 자체 버전을 정의할 수 있습니다(다시 ~/.bashrc를 통해).

command_not_found_handle() {
    echo "I don't know what '$1' is." >&2
    return 1
}

답변2

또 다른 방법은 실행 파일을 제공하는 패키지를 제거하는 것입니다 pk-command-not-found. 내 Rocky Linux 9에서는 command_not_found_handle다음과 같습니다.

command_not_found_handle () 
    [[ ! -x '/usr/libexec/pk-command-not-found' ]] && runcnf=0;
        '/usr/libexec/pk-command-not-found' "$@";
            printf 'bash: %scommand not found\n' "${1:+$1: }" 1>&2;

따라서 해당 실행 파일에 종속되어 있음을 알 수 있습니다 /usr/libexec/pk-command-not-found.

Red Hat과 유사한 시스템에서는 다음을 수행하여 패키지가 무엇인지 확인하고 제거할 수 있습니다.

# rpm -qf /usr/libexec/pk-command-not-found
PackageKit-command-not-found-1.2.4-2.el9.x86_64
# dnf remove PackageKit-command-not-found

이로 인해 시스템 전체가 변경되며 모든 사용자가 영향을 받습니다.

아, 그리고 2>&1단지 bash 파일 핸들 리디렉션입니다. 문자 그대로 "내 stderr를 stdout과 동일한 것으로 보냅니다"를 의미합니다.

관련 정보