Apt-get 자동 완성 완성을 사용할 수 있습니다 (예 :

현재 64 비트 Debian Wheezy를 실행하고 있습니다.

apt-get의 자동 완성에 문제가 있습니다. bash-completion이 설치되었습니다.

쉘에서 루트로 로그인 한 경우 apt-get에 자동 완성을 사용할 수 있습니다 (예 : apt-get install wicd [tab] [tab ]). 그러면 해당 패키지와 일치하는 모든 패키지가 표시됩니다. 그러나 루트가 아닌 다른 사용자 (sudo 포함)에서 apt-get에 자동 완성을 사용하려고하면 전혀 작동하지 않습니다. 파일 이름과 같은 다른 것들을 자동 완성 할 수 있습니다.

어떤 도움?

내 .bashrc 및 / etc / profile에 다음 코드가 있습니다.

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi


답변

귀하의 /etc/bash_completion파일이 없습니다해야합니다.

sudo apt-get install bash-completion

모든 문제를 해결해야합니다.

/etc/bash.bashrcFaheem Mitha 및 다른 사람들이 지적했듯이 이미 주석 처리되지 않은 줄이 있다고 가정하면 다음 과 같이 작동합니다.

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

이유 : bash-completion패키지에는 이제 해당 파일 (/ etc / bash_completion)이 있습니다. 그것은 bash패키지에 있었지만 더 이상은 아닙니다.

패키지 변경에 대한 정보


답변

이것을 실행하십시오 :

chsh -s /bin/bash $USER

답변

이것이 필요한지 기억할 수 없지만, 주석 처리가되어 /etc/bash.bashrc있지 않은 경우 해당 행의 주석 처리를 제거하십시오.

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

답변

내가 기억 하듯이 명령 매개 변수에 대한 bash 자동 완성은 명령을 통해 수행됩니다 complete. 루트 사용자 bashrc (아마도 /root/.bashrc)가로드 한 apt-get complete 스크립트가 있어야하며이를 실행하려면 루트 로그인이 필요합니다. Sudo는 루트 로그인 스크립트를로드하지 않고 단지 권한을 부여합니다.

루트가 아닌 사용자를위한 자동 완성 스크립트가 누락되어 apt-get에 대해 bash 자동 완성이 구성되어 있지 않을 수 있습니다. 이것이 사실이면 sudoers 파일 내에서 모든 권한을 가진 사용자를 위해 해당 기능을로드하십시오.