From 2d96d65ab98390a6bf008002c74dffeb181f022b Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:29:40 +0200 Subject: [PATCH] Update ha_entrypoint.sh --- .templates/ha_entrypoint.sh | 39 ++++++++++++++----------------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/.templates/ha_entrypoint.sh b/.templates/ha_entrypoint.sh index 2d832d703..afd7285a0 100755 --- a/.templates/ha_entrypoint.sh +++ b/.templates/ha_entrypoint.sh @@ -3,14 +3,12 @@ set -e # Exit immediately if a command exits with a non-zero status +echo "Starting..." # Detect if this is PID1 (main container process) — do this once at the start PID1=false if [ "$$" -eq 1 ]; then PID1=true - echo "Starting as entrypoint" -else - echo "Starting custom scripts" fi ###################### @@ -25,34 +23,27 @@ fi candidate_shebangs+=( "/usr/bin/env bashio" "/usr/bin/bashio" + "/usr/bin/bash" + "/usr/bin/sh" + "/bin/bash" + "/bin/sh" ) -# Find the first valid shebang interpreter in candidate list by probing bashio::addon.version +# Find the first valid shebang interpreter in candidate list shebang="" -tmp="$(mktemp)" -trap 'rm -f "$tmp"' EXIT - for candidate in "${candidate_shebangs[@]}"; do - echo "Trying $candidate" - # Build a tiny probe script that prints the addon version - printf '#!%s\n' "$candidate" >"$tmp" - cat >>"$tmp" <<'EOF' -out="$(bashio::addon.version 2>/dev/null || true)" -[ -n "$out" ] && printf '%s\n' "$out" -EOF - chmod +x "$tmp" - - # Run the probe and check for at least one digit in the output - out="$("$tmp" 2>/dev/null || true)" - echo "Output is $out" - if printf '%s' "$out" | grep -qE '[0-9]'; then - shebang="$candidate" - break + command_path="${candidate%% *}" + # Test if command exists and can actually execute a shell command (for shells) + if [ -x "$command_path" ]; then + # Try as both 'sh -c' and 'bashio echo' style + if "$command_path" -c 'echo yes' >/dev/null 2>&1 || "$command_path" echo "yes" >/dev/null 2>&1; then + shebang="$candidate" + break + fi fi done - if [ -z "$shebang" ]; then - echo "ERROR: No valid shebang found!" >&2 + echo "ERROR: No valid shebang found!" exit 1 fi