Speaking of the new s6opts, I found a bug (or two) when I accidentally ran it as a non-root user for the first time. It's something that only a new user would see. I got the error:
line 33: out_error: command not found
line 34: out_error: command not found
I did a little digging, and it turns out that
out_error is called before the file containing it's definition was sourced. The relevant code is:
for list in /usr/lib/obarun/{util.sh,s6opts.sh}; do
if [[ -f "${list}" ]]; then
source "${list}"
else
out_error "Missing file : ${list}"
exit 1
fi
done
When I put this code before the
case statement in the function
sourcing, I correctly get the error messages:
:: /home/username/service/service.conf doesn't exist
:: Use s6opts user command first
But then, when I run
s6opts user as suggested, I get the same error messages:
:: /home/username/service/service.conf doesn't exist
:: Use s6opts user command first
The following code from the aforementioned
case statement prevents the
user function from ever being called in the
case "${operation}" statement later in the file:
*) if ! source $(getent passwd ${USER}|cut -d : -f 6)/service/service.conf 2>/dev/null && [[ "${1}" != "user" ]]; then
out_error "$(getent passwd ${USER}|cut -d : -f 6)/service/service.conf doesn't exist"
out_error "Use s6opts user command first"
exit 1
fi
I hope this is enough info to help get it fixed.