我习惯使用文件来创建 upstart 服务,/etc/init/<service>.conf
而且它运行得很好,我唯一想要的就是像现在 /etc/init.d/ 中的每个服务一样使用制表符完成功能。
当写入 sudo service xx 时,应该出现服务的名称。
有没有办法将 upstart 服务添加到自动完成列表中?
答案1
/etc/init.d
根据 Debian 政策,每个使用 upstart 提供标准守护进程的软件包都需要提供符号链接。因此,自动完成功能已经起作用。如果遇到问题,请确保已安装该软件包。sudo service name
bash-completion
如果您正在创建自己的 upstart 作业,则符号链接与其他 upstart 作业一样。这将使您自己的作业以相同的方式工作。/etc/init.d/your_job
/lib/init/upstart-job
中有一些特殊的 upstart 作业在/etc/init
中没有对应的条目/etc/init.d
。这些是例外。来自 Debian Policy:
此规则的一个例外是 init 实现本身提供的脚本或作业;此类作业可能是 /etc/rcS.d/ 脚本的特定实现等效项所必需的,并且可能与 init 脚本没有一一对应的关系。
这些例外目前不适用于bash-completion
。但是,您可以直接使用start
、stop
和restart
而reload
无需service
,自动完成功能将正常工作。例如,sudo start shut
正确地自动完成。但您通常不需要直接调用没有相应init.d
条目的 upstart 作业。
注意:我在 Saucy 上测试了这一点。如果旧版本中没有出现支持,那么可能不支持(但当您升级到足够新的版本时,您很快就会获得支持)。