conclusão da guia para o comando service no debian

3

Eu tenho dois sistemas com o debian squeeze instalado. Em um sistema, quando digito:

service <TAB> 

mostra-me todos os serviços disponíveis (em /etc/init.d)

no outro sistema, mostra todos os arquivos do diretório atual. Alguém sabe qual configuração altera esse comportamento?

ATUALIZAÇÃO:

O arquivo /etc/bash_completion.d/service estava faltando. Eu copiei da máquina onde está trabalhando. Se eu digitar complete -p | grep service , será mostrado:

complete -F _service service

Na máquina em que não está funcionando, esse comando não me mostra nada. Eu executei complete -F _service service na linha de comando, depois disso, o comando service <TAB> me mostra:

service -su: completion: function '_service' not found

esta função é definida no arquivo de serviço que copiei recentemente, por alguns motivos, não pode ser encontrado ...

    
por markus 28.06.2012 / 16:25

2 respostas

16

Primeiro, verifique se o bash-completion está instalado, execute:

 $ dpkg -l bash-completion | tail -1

deve produzir algo como:

ii  bash-completion  1:1.3-1  programmable completion for the bash shell

Se a saída estiver vazia, instale-a com:

aptitude install bash-completion

Em seguida, verifique se está ativado:

 $ grep -A 2 bash_completion ~/.bashrc /etc/bash.bashrc

Deve produzir algo como

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

Se nada como isto ou ele é comentado (tem # após ~/.bashrc: ), então adicione / descomente

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

para ~ / .bashrc e releia-o com

. ~/.bashrc

Depois disso, deve funcionar bem.

    
por 28.06.2012 / 16:37
0

Eu estava tendo o mesmo problema, mas a "guia" mostrava apenas dois dos muitos serviços. Olhando para / usr / share / bash-completion / bash_completion você pode ver:

_sysvdirs()
{
    sysvdirs=( )
    [[ -d /etc/rc.d/init.d ]] && sysvdirs+=( /etc/rc.d/init.d )
    [[ -d /etc/init.d ]] && sysvdirs+=( /etc/init.d )
    # Slackware uses /etc/rc.d
    [[ -f /etc/slackware-version ]] && sysvdirs=( /etc/rc.d )
}

no meu caso, o /etc/rc.d/init.d existia e tinha apenas dois serviços. Depois de remover esse diretório, tudo funcionou bem.

    
por 08.10.2013 / 13:20

Tags