TAB нажмите для автозаполнения не работает для некоторых имен услуг

Я могу выполнить следующую команду на моем терминале Ubuntu 14.04.3 без проблем:

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

Если я наберу sudo service network и затем нажмите Tab, он автоматически завершен, чтобы sudo service networking,
Если я наберу sudo service network-ma и они нажимают Tab, автозаполнение не происходит.

У меня вопрос, есть ли сервис с именем network-manager это может быть перезапущено service команда почему его имя не заполняется автоматически? и как это решить?

Обновить:

ls -l /etc/init.d/network*
-rwxr-xr-x 1 root root 4479 Apr 28  2014 /etc/init.d/networking

1 ответ

Завершение вкладки для service смотрит файлы в /etc/init.d, Так как нет network-manager файл там, завершение вкладки не удается. Лучший вопрос, почему service network-manager работает на всех.

Согласно service справочная страница:

   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. 

Итак, поскольку есть /etc/init/network-manager.conf файл, service может запросить его, но нет автозаполнения, потому что нет сценария с таким именем в /etc/init.d,

Простой обходной путь - создать пустой файл с именем network-manager в /etc/init.d:

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

Как только вы это сделаете, вы можете завершить имя, как и ожидалось. Я проверил это на виртуальной машине, и она, кажется, работает нормально, service network-manager start|stop|restart|status Команды все работали и ничего не сломалось. Я предполагаю, что это означает, что пустой файл игнорируется и используется только для завершения, поэтому похоже, что это безопасно.

Другие вопросы по тегам