mirror of https://github.com/home-assistant/core
50 lines
1.1 KiB
Bash
Executable File
50 lines
1.1 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
# This is the first program launched at container start.
|
|
# We don't know where our binaries are and we cannot guarantee
|
|
# that the default PATH can access them.
|
|
# So this script needs to be entirely self-contained until it has
|
|
# at least /command, /usr/bin and /bin in its PATH.
|
|
|
|
addpath () {
|
|
x="$1"
|
|
IFS=:
|
|
set -- $PATH
|
|
IFS=
|
|
while test "$#" -gt 0 ; do
|
|
if test "$1" = "$x" ; then
|
|
return
|
|
fi
|
|
shift
|
|
done
|
|
PATH="${x}:$PATH"
|
|
}
|
|
|
|
if test -z "$PATH" ; then
|
|
PATH=/bin
|
|
fi
|
|
|
|
addpath /bin
|
|
addpath /usr/bin
|
|
addpath /command
|
|
export PATH
|
|
|
|
# Now we're good: s6-overlay-suexec is accessible via PATH, as are
|
|
# all our binaries.
|
|
|
|
# Skip further init if the user has a given CMD.
|
|
# This is to prevent Home Assistant from starting twice if the user
|
|
# decided to override/start via the CMD.
|
|
if test $# -ne 0 ; then
|
|
exec "$@"
|
|
fi
|
|
|
|
# Run preinit as root, then run stage0 as the container's user (can be
|
|
# root, can be a normal user).
|
|
|
|
exec s6-overlay-suexec \
|
|
' /package/admin/s6-overlay/libexec/preinit' \
|
|
'' \
|
|
/package/admin/s6-overlay/libexec/stage0 \
|
|
"$@"
|