From 6a3015aecc8ef86594a249d3a9270afcef9c44d5 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 23 Jul 2026 09:04:38 +0000 Subject: [PATCH] fix: skip install self-copy of settings.conf (same path) --- scripts/install.sh | 4 +++- scripts/upgrade.sh | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index 6b45e2c..5c81713 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -137,7 +137,9 @@ case "$cmd" in "$BASE/scripts/generate.sh" "$BASE/generated" install -m 0644 "$BASE/generated/config.json" "$BASE/etc/config.json" install -m 0644 "$BASE/generated/runtime.env" "$BASE/etc/runtime.env" - install -m 0644 "$CONFIG_FILE" "$BASE/etc/settings.conf" 2>/dev/null || true + if [[ "$(readlink -f "$CONFIG_FILE" 2>/dev/null || echo "$CONFIG_FILE")" != "$(readlink -f "$BASE/etc/settings.conf" 2>/dev/null || echo "$BASE/etc/settings.conf")" ]]; then + install -m 0644 "$CONFIG_FILE" "$BASE/etc/settings.conf" 2>/dev/null || true + fi "$BASE/bin/sing-box" check -c "$BASE/etc/config.json" systemctl restart cellular-proxy 2>/dev/null || true ;; diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh index 3008c89..78ae398 100755 --- a/scripts/upgrade.sh +++ b/scripts/upgrade.sh @@ -174,11 +174,14 @@ export CONFIG_FILE "$ROOT_DIR/scripts/generate.sh" "$INSTALL_DIR/generated" install -m 0644 "$INSTALL_DIR/generated/config.json" "$INSTALL_DIR/etc/config.json" install -m 0644 "$INSTALL_DIR/generated/runtime.env" "$INSTALL_DIR/etc/runtime.env" -# 保留 settings:只确保 INSTALL_DIR 字段正确 +# 保留 settings:只确保 INSTALL_DIR 字段正确(CONFIG_FILE 已是 live 路径时勿 self-copy) if ! grep -qE '^INSTALL_DIR=' "$CONFIG_FILE" 2>/dev/null; then printf 'INSTALL_DIR=%s\n' "$INSTALL_DIR" >> "$CONFIG_FILE" fi -install -m 0644 "$CONFIG_FILE" "$INSTALL_DIR/etc/settings.conf" +live_settings="$INSTALL_DIR/etc/settings.conf" +if [[ "$(readlink -f "$CONFIG_FILE" 2>/dev/null || echo "$CONFIG_FILE")" != "$(readlink -f "$live_settings" 2>/dev/null || echo "$live_settings")" ]]; then + install -m 0644 "$CONFIG_FILE" "$live_settings" +fi if ! "$INSTALL_DIR/bin/sing-box" check -c "$INSTALL_DIR/etc/config.json"; then die "sing-box 配置校验失败" @@ -238,7 +241,9 @@ case "$cmd" in "$BASE/scripts/generate.sh" "$BASE/generated" install -m 0644 "$BASE/generated/config.json" "$BASE/etc/config.json" install -m 0644 "$BASE/generated/runtime.env" "$BASE/etc/runtime.env" - install -m 0644 "$CONFIG_FILE" "$BASE/etc/settings.conf" 2>/dev/null || true + if [[ "$(readlink -f "$CONFIG_FILE" 2>/dev/null || echo "$CONFIG_FILE")" != "$(readlink -f "$BASE/etc/settings.conf" 2>/dev/null || echo "$BASE/etc/settings.conf")" ]]; then + install -m 0644 "$CONFIG_FILE" "$BASE/etc/settings.conf" 2>/dev/null || true + fi "$BASE/bin/sing-box" check -c "$BASE/etc/config.json" systemctl restart cellular-proxy 2>/dev/null || true systemctl restart cellular-proxy-admin 2>/dev/null || true