From 5275edc9943672f2bde6f145ef9f4a4b04890979 Mon Sep 17 00:00:00 2001 From: Alexey <1556417+alex-solovyev@users.noreply.github.com> Date: Sun, 15 Mar 2026 06:24:24 +0100 Subject: [PATCH] fix: replace Bash 4.0+ indirect expansion with eval for 3.2 compat Replace ${!env_var:-} with eval-based equivalent at 3 locations in config-helper.sh. The ${!var:-default} syntax causes 'bad substitution' on macOS /bin/bash 3.2.57, making config_get fail silently during pulse-wrapper.sh startup. Closes #4929 --- .agents/scripts/config-helper.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.agents/scripts/config-helper.sh b/.agents/scripts/config-helper.sh index c0883d3af3..f572c2cbb2 100755 --- a/.agents/scripts/config-helper.sh +++ b/.agents/scripts/config-helper.sh @@ -330,7 +330,9 @@ config_get() { local env_var env_var=$(_config_env_map "$dotpath") if [[ -n "$env_var" ]]; then - local env_val="${!env_var:-}" + # Use eval for Bash 3.2 compat — ${!var:-} causes "bad substitution" on 3.2 + local env_val="" + eval "env_val=\${$env_var:-}" if [[ -n "$env_val" ]]; then echo "$env_val" return 0 @@ -524,7 +526,8 @@ cmd_list() { local env_var env_var=$(_config_env_map "$dotpath") if [[ -n "$env_var" ]]; then - env_val="${!env_var:-}" + # Use eval for Bash 3.2 compat — ${!var:-} causes "bad substitution" on 3.2 + eval "env_val=\${$env_var:-}" fi # Determine source and effective value @@ -725,11 +728,12 @@ HEADER echo "[OK] Set ${dotpath}=${value}" >&2 # Show if an env var would override this - local env_val + local env_val="" local env_var env_var=$(_config_env_map "$dotpath") if [[ -n "$env_var" ]]; then - env_val="${!env_var:-}" + # Use eval for Bash 3.2 compat — ${!var:-} causes "bad substitution" on 3.2 + eval "env_val=\${$env_var:-}" if [[ -n "$env_val" ]]; then echo "[WARN] Environment variable ${env_var}=${env_val} will override this setting" >&2 fi