summaryrefslogtreecommitdiffstats
path: root/usr.sbin/service
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2009-12-21 20:32:04 +0000
committerdougb <dougb@FreeBSD.org>2009-12-21 20:32:04 +0000
commit7853ae36b4ef9200371c6342569268627b3fbe80 (patch)
tree2951341196286dd7d0254db9b441c8c214090681 /usr.sbin/service
parent6fa6ee6af2af7049386b494184f04dab71cfe77b (diff)
downloadFreeBSD-src-7853ae36b4ef9200371c6342569268627b3fbe80.zip
FreeBSD-src-7853ae36b4ef9200371c6342569268627b3fbe80.tar.gz
By popular request, execute rc.d scripts in the same environment
as they are at boot time. Original concept submitted by: ume
Diffstat (limited to 'usr.sbin/service')
-rw-r--r--usr.sbin/service/service.821
-rwxr-xr-xusr.sbin/service/service.sh4
2 files changed, 21 insertions, 4 deletions
diff --git a/usr.sbin/service/service.8 b/usr.sbin/service/service.8
index 5ae30ba..5778363 100644
--- a/usr.sbin/service/service.8
+++ b/usr.sbin/service/service.8
@@ -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 just what is enabled.
.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
diff --git a/usr.sbin/service/service.sh b/usr.sbin/service/service.sh
index 2885f81..eb3da48 100755
--- a/usr.sbin/service/service.sh
+++ b/usr.sbin/service/service.sh
@@ -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
OpenPOWER on IntegriCloud