Conclusão automática do Apt-get

9

Atualmente, estou executando o Debian Wheezy de 64 bits.

Estou tendo alguns problemas com a conclusão automática do apt-get. Eu tenho a conclusão do bash instalada.

Se eu estiver logado como root em um shell, posso usar o preenchimento automático para o apt-get (ex: apt-get install wicd [tab] [tab ]) e ele me mostrará todos os pacotes que correspondem a isso. Mas se eu tentar usar o preenchimento automático para o apt-get em outro usuário não raiz (mesmo com o sudo), ele não funcionará. Posso concluir automaticamente outras coisas, como nomes de arquivos.

Qualquer ajuda?

Eu tenho o seguinte código no meu .bashrc e / etc / profile

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Dennis Linuz
fonte
11
Primeiro, verifique se o root e os outros usuários têm o mesmo shell. Caso contrário, essa é a razão do comportamento diferente. Caso contrário, tente o seguinte: 'apt-cache --no-generate pkgnames "wicd"'. Funciona? É isso que o bash usa para gerar a conclusão do 'apt-get install wicd [TAB]'.
angus
Ambos estão usando o mesmo shell, bash. o comando apt-cache que você me deu funciona e mostra uma lista de todos os pacotes wicd. Além disso, o que descobri é que quando meu computador é inicializado pela primeira vez e faço login no shell pela primeira vez (não tenho um login da interface gráfica), o preenchimento automático do apt-get funcionará com qualquer conta. Mas se eu executar o meu gerenciador de janelas fvwm-crystal com startx e abrir um terminal, ele não funcionará novamente apenas com a minha conta de usuário. Ainda funciona com raiz em cristal fvwm.
Dennis Linuz
OK, é isso que pode estar acontecendo. / etc / profile e .bash_profile são executados em shells de login. Ou seja, quando você faz login no console ou quando executa 'su'. Como nesses casos a conclusão funciona, o / etc / profile está funcionando. O que resta é ~ / .bashrc. Verifique se a linha '. / etc / bash_completion 'está realmente sendo executado. Coloque algo como 'eco OK' antes dele, abra um novo terminal e verifique 'OK'.
angus
você já testou o ZSH?
Mohammad Efazati
Seu .bashrc pode estar completamente ausente; este foi o meu caso
Galvani 14/05

Respostas:

6

Seu /etc/bash_completionarquivo deve estar ausente.

sudo apt-get install bash-completion

deve resolver todos os seus problemas.

Dado que você já possui linhas não comentadas, /etc/bash.bashrccomo Faheem Mitha e outros apontaram, ela deve funcionar agora:

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

Razão: O bash-completionpacote agora possui esse arquivo (/ etc / bash_completion). Costumava estar no bashpacote, mas não mais.

informações sobre mudança de pacote

n611x007
fonte
o que deve estar no arquivo / etc / bash_completion ? Corri o bash-completion instalar comando e tudo já é a versão mais recente, mas meu arquivo de conclusão do bash está vazio
fifamaniac04
2

Tente executar o seguinte:

chsh -s /bin/bash $USER
HaEl
fonte
1

Não me lembro se isso é necessário, mas tente descomentar as linhas correspondentes /etc/bash.bashrcse ainda não estiver comentado, a saber

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

Pelo que me lembro, o preenchimento automático do bash para parâmetros de comando é feito via completecomando. Você deve ter um script de conclusão do apt-get carregado pelo usuário root bashrc (talvez /root/.bashrc), portanto, você precisa do login root para executá-lo. O Sudo não carrega scripts de login raiz, apenas lhe dá privilégios.

Talvez você esteja perdendo o script de preenchimento automático para usuários não raiz, para que eles não tenham o preenchimento automático do bash configurado para o apt-get. Se isso for verdade, carregue essa função para usuários com TODOS os privilégios no arquivo sudoers.

D4RIO
fonte