잘못된 명령 후 bash가 멈추는 원인은 무엇입니까?


23

잘못된 명령을 입력 할 때는 다음과 같이하십시오.

$ cd ..
$ ls

그러나 대신 너무 빨리 입력하고 l과 s 사이의 enter를 치면 다음과 같은 결과가 나타납니다.

$ cd ..
$ l
sbash: l: command not found...

이것은 물론 우리가 빨리 타이핑 할 때 항상 발생합니다. 내가 궁금한 것은 잘못된 명령 텍스트가 화면에 나타난 후 2.5 초 (시스템에서) 일시 중지의 소스입니다. 그것은 나쁜 명령을 즉시 인식하고 그것에 대한 오류 메시지를 인쇄하지만 재미를 위해 2.5 초 동안 기다렸다가 명령 줄로 돌아갑니다. 무엇이 원인입니까? 이 문제를 해결하는 방법이 있습니까? 작은 성가심이지만 제거하고 싶습니다. :)

편집 : Fedora 16 시스템 실행


사용중인 OS를 언급하지 않았습니다.
다니엘 벡

우와, 별명을 l에서 ls로 지정하지 않습니까? :)
dotjoe

답변:


42

이러한 유형의 동작은 bash에 연결된 일부 배포에 자주 설치되는 도구로 인해 발생합니다. 이 후크를 사용하면 명령을 실행하려고 할 때 명령이 존재하지 않으면 bash는 구성된 저장소에서 사용 가능한 파일을 검색하고 해당 명령을 얻기 위해 설치해야 할 패키지를 알려줍니다.

데비안 시스템이 아닌 경우 bash 시작 파일 프로파일 등을보고라는 함수를 정의하는 것이 있는지 확인하십시오 command_not_found_handle. 해당 bash 함수가 정의되면 명령을 실행할 때마다 호출되며 검색 경로에서 적절한 프로그램을 찾을 수 없습니다. typset | less출력 을 실행 하고 찾아 보면 command_not_found_handle()기능이 정의 된 경우 해당 기능 을 볼 수 있습니다.

데비안 / 우분투에서이 동작을 제공하는 패키지는 command-not-found 입니다. 당신이 그것을 제거하면, 당신은 속도가 느려지는 조회를 비활성화합니다.

여기에 예가 있습니다

# command-not-found installed
$ time pwgen
The program 'pwgen' is currently not installed.  To run 'pwgen' please ask your administrator to install the package 'pwgen'
pwgen: command not found

real    0m0.074s
user    0m0.032s
sys     0m0.040s

# purge command-not-found and restart bash
$ time pwgen
-bash: pwgen: command not found

real    0m0.002s
user    0m0.000s
sys     0m0.000s

정확한 시간은 물론 다릅니다. 나는 매우 거친 서버에서 테스트를 실행했습니다.


10
fedora에서 필자의 패키지는 다음과 같은 패키지로 밝혀졌습니다. PackageKit-command-not-found
Fuu

6

질문의 일부는 "(Fedora에서)이 문제를 해결하는 방법이 있습니까?"였습니다. .bashrc 파일의 맨 아래에 명령을 추가하십시오.

unset command_not_found_handle

.bashrc의 맨 위에서 / etc / bashrc 또는 다른 bash 스크립트를 실행 중일 수 있기 때문에 .bashrc의 끝에서 (또는 그와 가까운) 그렇게하고 싶을 것입니다.


5

fedora에서 /etc/PackageKit/CommandNotFound.conf구성 파일 을 변경하여이 동작을 제어 할 수 있습니다 .

SoftwareSourceSearch=false패키지 관리자를 사용하여 누락 된 명령으로 패키지를 찾으려고하지 않으므로 설정 이 지연을 제거합니다.

MaxSearchTime=2000패키지 검색에서 일치 항목을 반환 할 때까지 대기 할 시간 (밀리 초)을 표시하여 옵션을 변경하여 패키지 검색을 기다리는 시간을 변경할 수도 있습니다 . 기본값 2 초는 일치하는 항목을 반환 할만 큼 길지 않으며 오타가있을 때 원하지 않는 지연을 유발한다는 것을 알았습니다.

중 하나가 충돌 MaxSearchTime유용한 출력을 제공하거나 사용하지 않도록 SoftwareSourceSearch모두 지연을 제거 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.