aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sh/openrc-run.sh.in5
-rw-r--r--sh/rc-functions.sh17
2 files changed, 22 insertions, 0 deletions
diff --git a/sh/openrc-run.sh.in b/sh/openrc-run.sh.in
index ed565a46..12a4c6eb 100644
--- a/sh/openrc-run.sh.in
+++ b/sh/openrc-run.sh.in
@@ -149,6 +149,11 @@ _status()
# supervisor modules
default_start()
{
+ if yesno "${RC_USER_SERVICES}"; then
+ load_variables
+ save_variables
+ fi
+
local func=ssd_start
case "$supervisor" in
runit) func=runit_start ;;
diff --git a/sh/rc-functions.sh b/sh/rc-functions.sh
index 81d065b8..922bb870 100644
--- a/sh/rc-functions.sh
+++ b/sh/rc-functions.sh
@@ -134,6 +134,23 @@ _depend() {
done
}
+save_variables() {
+ mkdir -p "${RC_SVCDIR}"/env/
+
+ local _envname
+
+ if [ -n "${export_vars}" ]; then
+ rm "${RC_SVCDIR}/env/${RC_SVCNAME}"
+ for _envname in ${export_vars}; do
+ eval echo "${_envname}=\$${_envname}" >> "${RC_SVCDIR}/env/${RC_SVCNAME}"
+ done
+ fi
+}
+
+load_variables() {
+ sourcex -e "${RC_SVCDIR}/env/*"
+}
+
# Add our sbin to $PATH
case "$PATH" in
"$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);;