A mix of s6-envdir and importas. Reads files containing variable assignments in the given file/directory, adds the variables to the environment and then executes a program.
execl-envfile [ -h ] [ -l ] src prog
This tool expects to find a regular file or a directory in src containing one or multiple key=value
pair(s). It will parse that file, import the key=value
and then exec the given prog with the modified environment. In case of directory for each file found it apply the same process. src can be an absolute or a relative path.
It opens and reads a file.
It parses that file.
It imports the found key=value
pair(s).
It substitutes each corresponding key with value from that file.
It unexports the variable(s) if requested.
It execs prog with the modified environment.
-h : prints this help.
-l : loose; do nothing and execute prog directly if src does not contain any regular file(s) or src does not exist.
src is a text file or a directory containing lines of pairs with the syntax being: key = value
Whitespace is permitted before and after key, and before or after value. Quoting is also possible.
Empty lines or lines containing only whitespace are ignored. Lines beginning with #
(also after whitespace) are ignored and typically used for comments. Comments are not possible at the end of lines: key = value # comment
is not a valid comment.
If val begin by a !
character: key=!value
the key will be removed from the environment after the substitution.
#!/usr/bin/execlineb -P
fdmove -c 2 1
execl-envfile /etc/66/conf/ntpd
foreground { mkdir -p -m 0755 ${RUNDIR} }
execl-cmdline -s { ntpd ${CMD_ARGS} }
The equivalent with s6-envdir and importas would be:
#!/usr/bin/execlineb -P
fdmove -c 2 1
s6-envdir /etc/66/conf
importas -u RUNDIR RUNDIR
importas -u CMD_ARGS CMD_ARGS
foreground { mkdir -p -m 0755 ${RUNDIR} }
execl-cmdline -s { ntpd ${CMD_ARGS} }
where /etc/66/conf
contains two named files RUNDIR
and CMD_ARGS
written with /run/openntpd
and -d -s
respectively.
src can not exceed more than 100
files. Each file can not contain more than 4095
bytes or more than 50
key=value
pairs.