패키지 관리자로서 zsh 완성 파일을 어디에 설치해야 합니까?

패키지 관리자로서 zsh 완성 파일을 어디에 설치해야 합니까?

zsh 완료 스크립트가 포함된 프로젝트가 있습니다. 사용자가 소프트웨어를 설치할 때(예: make install, apt install또는 pacman -Si...을 실행하여) 완성 파일을 어디에 복사해야 합니까?

다른 쉘에는 다음과 같은 특정 완료 스크립트 디렉토리가 있다는 것을 알고 있습니다.
물고기->/usr/share/fish/vendor_completions.d
세게 때리다->/usr/share/bash-completion/completions

zsh는 어떻습니까?
다루기 힘든->/usr/share/???

답변1

zsh완성 기능에 사용되는 경로는 구성 가능합니다(참조:${fpath[@]}) 하지만 따라하는 것이 안전합니다.시스템 예시: 기본적으로 설치 접두사 아래에 설치 share/zsh/site-functions하지만 재정의할 수 있습니다. 설치 접두사는 /usr/local기본값이어야 합니다.

패키징 완료를 위해 Fedora 및 그 파생물이 이를 사용하고 /usr/share/zsh/site-functionsDebian 및 그 파생물이 이를 사용합니다 /usr/share/zsh/vendor-completions. 여기에서 사용된 특정 디렉터리에 대해 신경 쓰지 않아도 되지만 이 사례에서는 완료 설치 디렉터리 덮어쓰기를 허용하는 것이 유용한 이유를 설명합니다.

패키지되지 않은 완성의 경우 두 배포판 모두 지원합니다 /usr/local/share/zsh/site-functions.

답변2

zsh 5.0.7부터 시작, 기본 함수 로드 경로( $fpath)에는 가 포함됩니다 /usr/local/share/zsh/site-functions. 그러니 거기에 완성 기능을 설치해주세요.

/usr/share/fish/vendor_completions.d/usr/share/fish/vendor_completions.d둘 다 틀렸다는 점에 유의하세요 . 런타임은 make install아래 또는 그 안의 다른 섹션을 추가하거나 수정해서는 안 됩니다 /usr/bin( /usr/lib명시적으로 /usr/share지시하지 않는 한). 배포판에 의해 설치된 파일용으로 예약되어 있습니다. 입력 등을 통해 수동으로 설치/usr/usr/local/usrmake install/usr/local.

관련 정보