我的初始化脚本没有出现在服务自动完成

我为一个鬼网站做了一个init脚本。 我正在使用Linux Mint 16(aka Ubuntu 13.10)

当我input这个,我的脚本不显示在自动完成。

sudo service f<tab> 

任何原因为什么? 我得到一个不同的脚本“friendly_recover”,但不是我的。

谢谢!

麦克风

/etc/init/furtheryet.org.conf

 # furtheryet.org start on startup script cd /var/www/furtheryet.org/ghost npm start --production end script 

你期望sudo service f<tab>能自动完成sudo service furtheryet.org.conf吗?

不,它不会,因为:

  • 它只是一个configuration文件
  • 它位于那个错误的目录中

你应该考虑/etc/init.d文件夹:

  • /etc/init/文件夹只包含Upstart使用的configuration文件。

  • /etc/init.d文件夹包含响应startstoprestartreload (以及可以实现的)的shell脚本。

进一步阅读: https : //askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d

也就是说,要使脚本自动完成,至less应将其放在/etc/init.d文件夹中,并使其可执行。

但是你的脚本实际上只是一个configuration文件。 你应该考虑编写一个特定的服务/初始化脚本,并把它放在你的/etc/init.d文件夹中。


在某些情况下,我注意到,即使脚本位于/etc/init.d也可能在Ubuntu 13.10root用户身份自动完成。

要解决这个问题,以root用户身份编辑$HOME/.bachrc文件并取消注释如下:

 if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi 

然后通过运行以下命令重新加载.bashrc文件. $HOME/.bashrc . $HOME/.bashrc

这是一个古老的问题,但我通过谷歌,并选定的答案是错误的。

Upstart作业必须放在/etc/init文件夹中。

每个使用upstart提供标准守护进程的软件包都需要通过Debian策略在/etc/init.d中提供符号链接。

然后,自动完成sudo服务名称将工作。

/ etc / init中有特殊的upstart作业,它们在/etc/init.d中没有对应的条目。 这是一个例外。

如果您使用的是相同的目录types./f点击<tab> 。 否则,在你点击<tab>之前你必须input: /etc/init/f

你的脚本必须是可执行的:

 chmod +x /etc/init/furtheryet.org.conf