Pressione TAB para auto-completar não funciona para alguns nomes de serviços [duplicados]

2

Eu posso executar o seguinte comando no meu terminal Ubuntu 14.04.3 sem qualquer problema:

sudo service network-manager restart
[sudo] password for username: 
network-manager stop/waiting
network-manager start/running, process 5204

Se eu digitar sudo service network e depois pressionar Tab , ele será preenchido automaticamente para sudo service networking .
Se eu digitar sudo service network-ma e eles pressionarem Tab , nenhum preenchimento automático ocorrerá.

A minha pergunta é se existe um serviço chamado network-manager que pode ser reiniciado pelo comando service porque é que o seu nome não é preenchido automaticamente? e como resolver isso?

Atualização:

ls -l /etc/init.d/network*
-rwxr-xr-x 1 root root 4479 Apr 28  2014 /etc/init.d/networking
    
por PHP Learner 21.09.2015 / 08:03

1 resposta

0

A conclusão da tabulação para service parece arquivos foe em /etc/init.d . Como não há arquivo network-manager , a conclusão da tabulação falha. Uma pergunta melhor é por que service network-manager funciona.

De acordo com a página service man:

   The  SCRIPT  parameter  specifies  a  System  V init script, located in
   /etc/init.d/SCRIPT, or the name of an upstart  job  in  /etc/init. 

Portanto, como há um arquivo /etc/init/network-manager.conf , service pode consultá-lo, mas não há autocompletar porque não há script com esse nome em /etc/init.d .

Uma solução simples seria criar um arquivo vazio chamado network-manager in /etc/init.d :

sudo touch /etc/init.d/network-manager

Depois disso, você pode tabular o nome como esperado. Eu testei isso em uma VM e parecia funcionar bem, os comandos service network-manager start|stop|restart|status funcionaram e nada parecia estar quebrado. Eu suponho que isso significa que o arquivo vazio é ignorado e usado apenas para a conclusão, por isso parece que isso é seguro.

    
por terdon 03.10.2015 / 16:00