Author: feld (ports committer)
Date: Fri May 25 19:36:26 2018
New Revision: 334221
URL: https://svnweb.freebsd.org/changeset/base/334221

Log:
  rc.subr: Support loading environmental variables from a file
  
  The current support for setting environment via foo_env="" in rc.conf is
  not scalable and does not handle envs with spaces in the value. It seems
  a common pattern for some newer software is to skip configuration files
  altogether and rely on the env. This is well supported in systemd unit
  files and may be the inspiration for this trend.
  
  MFH:          1 week
  Differential Revision:        https://reviews.freebsd.org/D14453

Modified:
  head/etc/rc.subr

Modified: head/etc/rc.subr
==============================================================================
--- head/etc/rc.subr    Fri May 25 19:16:05 2018        (r334220)
+++ head/etc/rc.subr    Fri May 25 19:36:26 2018        (r334221)
@@ -754,6 +754,8 @@ check_startmsgs()
 #
 #      ${name}_env     n       Environment variables to run ${command} with.
 #
+#      ${name}_env_file n      File to source variables to run ${command} with.
+#
 #      ${name}_fib     n       Routing table number to run ${command} with.
 #
 #      ${name}_nice    n       Nice level to run ${command} at.
@@ -954,7 +956,14 @@ run_rc_command()
            _group=\$${name}_group      _groups=\$${name}_groups \
            _fib=\$${name}_fib          _env=\$${name}_env \
            _prepend=\$${name}_prepend  
_login_class=\${${name}_login_class:-daemon} \
-           _limits=\$${name}_limits    _oomprotect=\$${name}_oomprotect
+           _limits=\$${name}_limits    _oomprotect=\$${name}_oomprotect \
+           _env_file=\$${name}_env_file
+
+       if [ -n "$_env_file" ] && [ -r "${_env_file}" ]; then   # load env from 
file
+               set -a
+               . $_env_file
+               set +a
+       fi
 
        if [ -n "$_user" ]; then        # unset $_user if running as that user
                if [ "$_user" = "$(eval $IDCMD)" ]; then
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to