svn commit: r200809 - head/usr.sbin/service

Doug Barton dougb at FreeBSD.org
Mon Dec 21 20:32:05 UTC 2009


Author: dougb
Date: Mon Dec 21 20:32:04 2009
New Revision: 200809
URL: http://svn.freebsd.org/changeset/base/200809

Log:
  By popular request, execute rc.d scripts in the same environment
  as they are at boot time.
  
  Original concept submitted by:	ume

Modified:
  head/usr.sbin/service/service.8
  head/usr.sbin/service/service.sh

Modified: head/usr.sbin/service/service.8
==============================================================================
--- head/usr.sbin/service/service.8	Mon Dec 21 20:18:01 2009	(r200808)
+++ head/usr.sbin/service/service.8	Mon Dec 21 20:32:04 2009	(r200809)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd December 19, 2009
+.Dd December 20, 2009
 .Dt service 8
 .Os
 .Sh NAME
@@ -44,7 +44,10 @@ The
 .Nm
 command is an easy interface to the rc.d system.
 Its primary purpose is to start and stop services provided
-by the rc.d scripts, however it can also be used to list
+by the rc.d scripts.
+When used for this purpose it will set the same restricted
+environment that is in use at boot time (see below).
+It can also be used to list
 the scripts using various criteria.
 .Pp
 The options are as follows:
@@ -78,6 +81,20 @@ above, but list all of the files, not ju
 .It Fl v
 Be slightly more verbose
 .El
+.Sh ENVIRONMENT
+When used to run rc.d scripts the
+.Nm
+command sets
+.Ev HOME
+to
+.Pa /
+and
+.Ev PATH
+to
+.Pa /sbin:/bin:/usr/sbin:/usr/bin
+which is how they are set in
+.Pa /etc/rc
+at boot time.
 .Sh EXIT STATUS
 .Ex -std
 .Sh EXAMPLES

Modified: head/usr.sbin/service/service.sh
==============================================================================
--- head/usr.sbin/service/service.sh	Mon Dec 21 20:18:01 2009	(r200808)
+++ head/usr.sbin/service/service.sh	Mon Dec 21 20:32:04 2009	(r200809)
@@ -106,11 +106,11 @@ else
 	exit 1
 fi
 
+cd /
 for dir in /etc/rc.d $local_startup; do
 	if [ -x "$dir/$script" ]; then
 		[ -n "$VERBOSE" ] && echo "$script is located in $dir"
-		$dir/$script $*
-		exit $?
+		exec env -i HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin $dir/$script $*
 	fi
 done
 


More information about the svn-src-all mailing list