diff options
author | Igor Murzov <e-mail@date.by> | 2011-11-09 05:06:42 +0300 |
---|---|---|
committer | Igor Murzov <e-mail@date.by> | 2011-11-09 05:09:37 +0300 |
commit | fbbd476df0fc5e077ba8fbf679e685fdbda4c8df (patch) | |
tree | 1e9479baf9f7a02933924c4ece1680e0dcaf7864 /completions | |
parent | 588facb6b64a76e8da65b3dcb1daf8bbf073cb41 (diff) | |
download | bash-completion-fbbd476df0fc5e077ba8fbf679e685fdbda4c8df.tar.gz |
Add and use _sysvdirs() function that sets correct SysV init directory.
This function allows distros to fine tune their init directory location,
as simple checking for directories presence is not always sufficient.
Diffstat (limited to 'completions')
-rw-r--r-- | completions/service | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/completions/service b/completions/service index f008770e..147aad4f 100644 --- a/completions/service +++ b/completions/service @@ -15,20 +15,22 @@ _service() if [[ $cword -eq 1 && $prev == ?(*/)service ]]; then _services else - local sysvdir - [ -d /etc/rc.d/init.d ] && \ - sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d + local sysvdirs + _sysvdirs COMPREPLY=( $( compgen -W '`sed -e "y/|/ /" \ -ne "s/^.*\(U\|msg_u\)sage.*{\(.*\)}.*$/\2/p" \ - $sysvdir/${prev##*/} 2>/dev/null` start stop' -- "$cur" ) ) + ${sysvdirs[0]}/${prev##*/} 2>/dev/null` start stop' -- "$cur" ) ) fi return 0 } && complete -F _service service -for svc in /etc/init.d/!($_backup_glob) /etc/rc.d/init.d/!($_backup_glob); do - [ -x "$svc" ] && complete -F _service $svc +_sysvdirs +for svcdir in ${sysvdirs[@]}; do + for svc in $svcdir/!($_backup_glob); do + [ -x "$svc" ] && complete -F _service $svc + done done -unset svc +unset svc svcdir sysvdirs # ex: ts=4 sw=4 et filetype=sh |