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-functions
Debian 및 그 파생물이 이를 사용합니다 /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
/usr
make install
/usr/local
.