/etc/init.d in the default $PATH ?

Sertaç Ö. Yıldız sertac.liste at gmail.com
Tue Feb 6 12:08:04 UTC 2007


* [05.Şub.07 12:47 -0500] Michel Salim:
> 2007/2/3, Jeffrey C. Ollie <jeff at ocjtech.us>:
> >If you install bash-completion and then type "service TAB" it will show
> >you a list of all of the services.
> >
> One reason I did not realized bash-completion already does this is
> that you have to be root (to have /sbin in your path) for the
> tab-completion to work.

Actually you don’t need to have /sbin in $PATH. Completion works fine if
you just type “service <TAB>” or modify the completion function as
attached.

-- 
~sertaç
-------------- next part --------------
--- /etc/bash_completion.orig	2007-02-06 11:51:08.000000000 +0200
+++ /etc/bash_completion	2007-02-06 13:49:18.000000000 +0200
@@ -546,7 +546,7 @@
 
 	# don't complete for things like killall, ssh and mysql if it's
 	# the standalone command, rather than the init script
-	[[ ${COMP_WORDS[0]} != @(*init.d/!(functions|~)|service) ]] && return 0
+	[[ ${COMP_WORDS[0]} != @(*init.d/!(functions|~)|/sbin/service|service) ]] && return 0
 
 	# don't complete past 2nd token
 	[ $COMP_CWORD -gt 2 ] && return 0
@@ -554,7 +554,7 @@
 	[ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \
 				|| sysvdir=/etc/init.d
 
-	if [[ $COMP_CWORD -eq 1 ]] && [[ $prev == "service" ]]; then
+	if [[ $COMP_CWORD -eq 1 ]] && [[ $prev == "service" || $prev == "/sbin/service" ]]; then
 		_services
 	else
 		COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \


More information about the fedora-devel-list mailing list