dnf 설치가 완료되어 zsh에서는 사용할 수 없지만 bash에서는 사용할 수 있습니다

dnf 설치가 완료되어 zsh에서는 사용할 수 없지만 bash에서는 사용할 수 있습니다

Bash에서 를 입력하면 dnf install java<tab>설치할 패키지에 대한 제안이 많이 표시됩니다. 그러나 zsh에서 이 작업을 수행하면 아무 일도 일어나지 않습니다. 나는 /etc/bashrc를 가지고 놀았고 bash_completion이 bash에서 작동하도록 허용한다는 것을 알았지만 zsh에서 작동하게 만드는 방법을 모르겠습니다.

답변1

ZSH의 제공 완료 시간은 $fpath시간이 지남에 따라 변하며, 특히 오래되고 낡은 ZSH 설치에서는 알 수 없는 새롭고 흥미로운 프로그램의 경우 더욱 그렇습니다. 일반적인 단계는 다음과 같습니다.

  1. ZSH를 최신 버전으로 업데이트하고 이제 완성 스크립트가 있는지 확인하세요. print $fpath[-1]/_dnf하지만 일부 명령의 경우 완성 스크립트가 compdef특정 줄 아래의 다른 파일에 있을 수도 있습니다.
  2. 소프트웨어가 메일링 리스트에 기여되지 않은 ZSH 완성 스크립트와 함께 제공되는지 확인하십시오 zsh-workers(드물지만 그렇다면 포함할 수 있도록 해당 완성 코드를 ZSH 사람들에게 제출할 수도 있습니다.
  3. 다른 ZSH 완료 저장소에 완료 코드가 포함되어 있는지 확인하세요.https://github.com/zsh-users/zsh-completions/
  4. 프로그램에 대한 자신만의 완성 스크립트를 작성하십시오. 이를 위해서는 일반적으로 기존 완성 스크립트, zshall(1)문서화 등에 대한 조사 _arguments, 일반적인 조정 및 테스트가 필요합니다.

편리한 파일 통합 명령 $fpath은 다음과 같습니다.

% print -l ${^fpath}/_pgrep(N)
/Users/jdoe/.zsh/functions/darwin/_pgrep
/opt/local/share/zsh/5.3.1/functions/_pgrep
% 

이는 내 Mac에 pgrep업스트림 외에 사용자 정의 완성이 있음을 보여줍니다.

관련 정보