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