#!/usr/bin/env bash # 标准启动与验证入口(bash shell 版),与 init.ps1 等价,二选一: # - MSYS2 / Git Bash / WSL / Linux:用本文件 ./init.sh # - Windows 原生 PowerShell:用 ./init.ps1 # 一条命令完成:依赖安装 -> 基础验证 -> 打印启动命令。 set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT_DIR" PYTHON=".venv/bin/python3.12" PIP=".venv/bin/pip3.12" # MSYS2/MinGW venv 中可执行文件带 .exe 后缀 # 优先使用无后缀名(Linux/WSL 原生 venv),不存在则加 .exe if [[ ! -f "$PYTHON" ]] && [[ -f "${PYTHON}.exe" ]]; then PYTHON="${PYTHON}.exe" PIP="${PIP}.exe" fi if [[ ! -f "$PYTHON" ]]; then echo "ERROR: venv 不存在或已损坏" echo "请先运行: python3.12 -m venv .venv && .venv/bin/python3.12 -m pip install -r requirements.txt" exit 1 fi INSTALL_CMD=("$PIP" install -r requirements.txt) VERIFY_CMD=("$PYTHON" manage.py check) START_CMD=("$PYTHON" manage.py runserver) echo "==> 当前目录: $PWD" echo "==> 同步依赖" "${INSTALL_CMD[@]}" echo "==> 运行基础验证" "${VERIFY_CMD[@]}" echo "==> 启动命令" printf ' %q' "${START_CMD[@]}" printf '\n' if [ "${RUN_START_COMMAND:-0}" = "1" ]; then echo "==> 启动应用" exec "${START_CMD[@]}" fi echo "如果希望 init.sh 直接启动应用,请设置 RUN_START_COMMAND=1。" echo "如果基础验证失败,先修复基线状态,不要在坏的起点上继续叠新功能。"