apt-get 자동 완성

apt-get 자동 완성

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

apt-get의 자동 완성에 몇 가지 문제가 있습니다. bash 완성을 설치했습니다.

셸에서 루트로 로그인한 경우 apt-get autocomplete를 사용할 수 있습니다(예:apt-get 설치 wicd[탭][탭]]) 일치하는 모든 패키지가 표시됩니다. 그러나 루트가 아닌 다른 사용자에게 apt-get 자동 완성 기능을 사용하려고 하면(sudo를 사용하더라도) 전혀 작동하지 않습니다. 파일 이름과 같은 다른 항목을 자동 완성할 수 있습니다.

도움이 필요하세요?

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

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

답변1

파일 /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예전에는 포장 에 들어 있었지만 지금은 그렇지 않습니다.

포장 변경 정보

답변2

이것이 필요한지 기억이 나지 않지만 /etc/bash.bashrc아직 주석 처리를 해제하지 않았다면 해당 줄의 주석 처리를 해제해 보십시오.

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

답변3

다음을 실행해 보세요.

chsh -s /bin/bash $USER

답변4

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

루트가 아닌 사용자를 위한 자동 완성 스크립트가 누락되어 apt-get에 대해 bash 자동 완성이 구성되어 있지 않을 수 있습니다. 그렇다면 sudoers 파일에서 모든 권한을 가진 사용자에 대한 함수를 로드하세요.

관련 정보