CentOS7のsystemctl自動補完設定

相変わらずリプレースが続いている昨今ですが、CentOS/RHELの5からは6を飛ばして7を選択するという案件も発生してきました。
事前に情報は得ていたものの、各ミドルウェアの起動にはsystemctlとserviceの差で運用手順の見直しが必要だと
思ったくらい違うので、備忘録として残しておこうと思います。

■参考URL
Bash-Completion で複雑な補完をする – いますぐ実践! Linuxシステム管理 / Vol.236
http://www.usupi.org/sysad/236.html

まあ、「bash-completion」をインストールしたほうがよいに決まっているんですが…
/etc/init.dにほとんど何も無くなったので、手動でプログラムを追加せねばならないようでして。
(そうじゃない!っていわれたいです。情報求む・・・)

RHEL7 からはsystemctlが推奨なのですが、configtestが無いので、いちいちapachectl configtestと打つのが
今までと違っていて面倒だなと思ったので、便利になるまではservice httpd configtestを打って行こうとおもっています。

適当に、3つぐらいの良く使うミドルウェアの補完をしてくれるスクリプトを記録しておきます。
(ほとんど、参考URLのとおりなのですが)

# cat /root/.bash_profile

# coplete
_service()
{
local opts cur prev
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
 
if [ $COMP_CWORD = 1 ]; then
  COMPREPLY=( $( compgen -W "httpd mysql postfix" -- $cur ))
elif [ $COMP_CWORD = 2 ]; then
  COMPREPLY=( $( compgen -W "start stop restart status configtest" -- $cur ))
fi
}
complete -F _service service