Ville Skyttä ed1efd
diff --git a/contrib/service b/contrib/service
Ville Skyttä ed1efd
index 9ebd117..6efd7c1 100644
Ville Skyttä ed1efd
--- a/contrib/service
Ville Skyttä ed1efd
+++ b/contrib/service
Ville Skyttä ed1efd
@@ -32,9 +32,11 @@ _service()
Ville Skyttä ed1efd
     return 0
Ville Skyttä ed1efd
 } &&
Ville Skyttä ed1efd
 complete -F _service service
Ville Skyttä ed1efd
-[ -d /etc/init.d/ ] && complete -F _service -o default \
Ville Skyttä ed1efd
-    $(for i in /etc/init.d/*; do
Ville Skyttä ed1efd
-    complete -p ${i##*/} &>/dev/null || printf '%s\n' ${i##*/}; done)
Ville Skyttä ed1efd
+for svc in /etc/init.d/*; do
Ville Skyttä ed1efd
+    [ ! -x "$svc" ] || complete -p "${svc##*/}" &>/dev/null || \
Ville Skyttä ed1efd
+        complete -F _service -o default "${svc##*/}"
Ville Skyttä ed1efd
+done
Ville Skyttä ed1efd
+unset svc
Ville Skyttä ed1efd
 
Ville Skyttä ed1efd
 # Local variables:
Ville Skyttä ed1efd
 # mode: shell-script