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 Команды все работали и ничего не сломалось. Я предполагаю, что это означает, что пустой файл игнорируется и используется только для завершения, поэтому похоже, что это безопасно.