명령이 존재하지 않는지 감지하도록 구성, 설치 제안 내용을 표시하도록 쉘을 구성 할 수

다음 과 유사하게 명령이 존재하지 않을 때 zsh표시되는 내용을 표시하도록 쉘을 구성 할 수 있습니까?bash

kahless:~$ sysv-rc-conf
The program 'sysv-rc-conf' is currently not installed.  You can install it by typing:
sudo apt-get install sysv-rc-conf

ZSH 프롬프트 대신

[kahless /home/teward]% sysv-rc-conf
zsh: command not found: sysv-rc-conf

참고 프롬프트 자체를 변경하고 싶지는 않지만 결과를 zsh: command not foundbash와 유사한 출력으로 변경하고 싶습니다 The program 'progname' is currently not installed. You can install it by typing:.

ZSH에서도 가능합니까?



답변

이 기능은 패키지에서 제공 합니다. 우분투는 기본적으로 설치하고 bash에서는 기본적으로 활성화하지만 zsh에서는 활성화하지 않습니다. 이 줄을 다음에 추가하십시오 .command-not-found ~/.zshrc

. /etc/zsh_command_not_found

답변

파일이없는 배포판에서 .zshrc를 공유하는 경우 파일이 존재하면 검사를 추가 할 수 있습니다 /etc/zsh_command_not_found.

[[ -a "/etc/zsh_command_not_found" ]] && . /etc/zsh_command_not_found

또한 oh-my-zsh를 사용 하는 경우 동일한 기능을 수행하는 변수에 command-not-found추가 할 수 있는 플러그인이 이미 있습니다 plugins.


답변

oh-my-zsh를 사용하는 경우 대신 내부에서 “플러그인”을 찾을 수 있습니다 .zshrc.

추가 command-not-found플러그인 (이 플러그인은 이미 기본적으로 설치됩니다) 자동로드에 플러그인의 목록.

이처럼 :

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git command-not-found)

답변

작동 방식은 bash의 command_not_found_handle () 함수를 사용하는 것입니다. bash는 기본적으로 명령을 찾을 수 없을 때 호출되는 함수 인 후크를 제공합니다. 데비안의 bash는 (그리고 zsh와 동일하지는 않지만) 우분투의 bash 구현은 그것을 포착하고 패키지 검색을 수행합니다. zsh의 맨 페이지에서 비슷한 기능을 가지고 있는지 확인할 수 있습니다.

다음은 zsh가 유사하기를 시작하는 방법입니다.

mpandit@mpandit-ubuntu:~$ command_not_found_handle() {echo 'Handler: Command not found!';}
mpandit@mpandit-ubuntu:~$ ddaadada
'Handler: Command not found!
mpandit@mpandit-ubuntu:~$

답변

또한 zsh가이 동작을 100 % 수행하지 못하게하려면 다음과 같이 수동으로 수행하면됩니다.

/usr/lib/command-not-found urxvt

또는 $ PATH에 명령을 찾을 수 없습니다