답변:
데비안에는 'bash-completion'이 설치되어 활성화되어 있지 않습니다.
이 문제를 해결하려면 루트로 실행하십시오.
apt-get install bash-completion
그런 다음 두 가지 옵션이 있습니다. (1) 사용자별로 직접 활성화하거나 (2) 전체적으로 활성화 할 수 있습니다.
사용자에게만 사용 ~/.bashrc
하려면 다음을 편집 하십시오.
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
로그 아웃했다가 다시 로그인하지 않고 시도하려면 다음을 실행하십시오.
. ~/.bashrc
또는 새로운 껍질을여십시오. 그런 다음 apt와 함께 탭 완성을 사용하십시오. 시작 부분의 점과 공백 ( .
)은 source
bash 에서 키워드 를 사용하는 것과 동일 하지만 더 이식성이 뛰어납니다.
su
루트 계정에 들어갈 때 작동하게하려면 루트의 홈 디렉토리에서 동일한 작업을 수행하십시오 (일반적으로 /root
).
전체적으로 사용하려면 파일에서 (1)의 변경을 수행하십시오 /etc/bash.bashrc
.
왜 이것이 효과가 있는지 궁금해하는 사람 .
은 앞에 디렉토리가 공백이 있기 때문에 현재 디렉토리를 참조 /etc/bash_completion
하지 않습니다 . 대신 지정된 파일의 내용을 새 서브 쉘에서 실행하는 대신 현재 실행중인 쉘에서 평가합니다. 여기에 표준화되어 있습니다.
Bash에서는 이것이 .
명령으로 대체 될 수 source
있지만 POSIX는 표준화되어 있지 않으며 이식성이 떨어 지므로 사람들이 사용하지 못하게합니다. 이 경우에는 특히 bourne shell 또는에서 작동 해야하는 것이 아니라 bash를 확장하기위한 프로그램이므로 가독성을 ksh
자유롭게 대체 할 수 있습니다 source
.
데비안 9 스트레치에서 /etc/bash.bashrc를 편집하고 주석을 해제하십시오 :
# enable bash completion in interactive shells
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
이 구성 파일을 Ubuntu의 / usr / share / bash-completion / completions / apt에서 Jessie의 동일한 디렉토리로 복사하십시오. http://pastebin.com/PRBMt3an 에서 파일을 얻을 수도 있습니다.
나는 자동 완성하려고 자동 완성 문제가 있었다 wget
과를 apt-get install wg[TAB][TAB]
하고 난 제거하여 그것을 해결하기 위해 관리 --no-generate
아래 파리에서 매개 변수를 :
/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get
이러한 파일은 설치 한 후에 만 사용할 수 있습니다 bash-completion
.
--no-generate
내가 말하는 겁니다 매개 변수 아래 라인에서 볼 수있는,하지만 난 모두 제거 --no-generate
뿐만 아니라,이 라인에서 :
https://github.com/scop/bash-completion/blob/master/completions/apt-get# L28
set -v
이전으로 실행 한 후이 시점 apt-get install wg[TAB][TAB]
에 도달했으며 실행 된 명령은 다음과 같습니다.
apt-cache --no-generate pkgnames wg
그리고 출력은 오류였습니다 :
E: Could not open file - open (2: No such file or directory)
내가 apt-cache pkgnames wg
없이 실행했을 때 --no-generate
자동 완성 목록을 올바르게 얻었습니다.
root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev
도움이 되었기를 바랍니다.
문제는 아마도
Dir::Cache::pkgcache "";
Dir::Cache::srcpkgcache "";
의 설정 /etc/apt/apt.conf.d
. 필자의 경우 Debian Docker 이미지에서 시작했습니다. https://github.com/debuerreotype/debuerreotype/blob/799473bee3d388cf00bd55221b38a9d58bd6a2ba/scripts/debuerreotype-minimizing-config