"install"을 사용하여 설치된 관련 man 파일 및 bash 완료 파일과 함께 일부 정적으로 링크된 바이너리를 보관하는 git 저장소가 있습니다.GNU 스토우심볼릭 링크를 만드세요.
이전에는 아무 문제 없이 bash 완료 파일에 심볼릭 링크를 넣었 지만 최근에는 바이너리가 들어가고 man 파일도 거기에 있기 때문에 심볼릭 링크가 더 정확한 위치라고 생각했기 때문에 /etc/bash_completion.d
심볼릭 링크를 넣기 시작했습니다 ./usr/share/bash-completion/completions
/usr/local/bin
/usr/local/share/man
이 새로운 위치에 배치하면 더 이상 작동하지 않는 4개의 특정 bash 완료 파일을 제외하고 모든 것이 이전과 같이 작동합니다. 이것들은 모두:
fzf에 대한 이 두 가지:
잘 작동하는 다른 bash 완료 파일이 20개 있습니다. 에서는 잘 작동 /etc/bash_completion.d
하지만 에서는 작동하지 않는 특정 bash 완료 파일의 특징은 무엇입니까 /usr/share/bash-completion/completions
?
편집하다:~/.local/share/bash-completion/completions
그것들 은 어느 것에서도 작동 하지 않습니다 .
추가 정보:
이 파일은 표준 Debian/Ubuntu .bashrc
범위에서 유래되었습니다.
# Enable programmable completion features
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
두 위치 모두에서 소스는 디렉터리의 내용이 아니라 다음 두 파일입니다.
/usr/share/bash-completion/bash_completion
그렇지 않은 경우 두 번째 파일은 단순히 첫 번째 파일을 가리킵니다 shopt -oq posix
. 내 설정에서:
$ if ! shopt -oq posix; then echo "not posix"; fi
not posix
내 생각엔 대답이 이렇게 되어야 할 것 같아/usr/share/bash-completion/bash_completion.
더:
bash_completion
최신 버전으로 변경해 보았 으나 역시 소용이 없었습니다.
https://github.com/scop/bash-completion
반품..
이러한 파일을 어느 곳에 배치해도 아무런 효과가 없습니다 ~/.local/share/bash-completion/completions
.
답변1
이전 버전과의 호환성을 위해 /etc/bash_completion.d
의 완성 파일은 항상 즉시 가져옵니다. 반면에 디렉터리는 그 안에 있는 스크립트를 느리게 가져옵니다. 즉, 해당 명령의 완료가 요청될 때까지 특정 완료 파일을 가져오지 않습니다 bash_completion
. completions
소스 파일은 이름으로 결정되므로 완성하려는 명령과 이름이 동일해야 합니다. 예를 들어 tmux.completion.bash
심볼릭 링크는 이어야 completions/tmux
하고 되어서는 안 됩니다 completions/tmux.completion.bash
.
마지막으로, 다른 모든 항목을 아래에 넣을 때 /usr/local
완성 스크립트를 여기에 넣을 수도 있습니다 /usr/local/share/bash-completion/completions
.