summaryrefslogtreecommitdiff
path: root/completions
diff options
context:
space:
mode:
authorIgor Murzov <e-mail@date.by>2011-11-09 05:06:42 +0300
committerIgor Murzov <e-mail@date.by>2011-11-09 05:09:37 +0300
commitfbbd476df0fc5e077ba8fbf679e685fdbda4c8df (patch)
tree1e9479baf9f7a02933924c4ece1680e0dcaf7864 /completions
parent588facb6b64a76e8da65b3dcb1daf8bbf073cb41 (diff)
downloadbash-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/service16
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