diff --git a/cron_daily.sh b/cron_daily.sh index 2302180..339ec99 100755 --- a/cron_daily.sh +++ b/cron_daily.sh @@ -4,7 +4,48 @@ set -euo pipefail PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$PROJECT_DIR" -if ! command -v bun >/dev/null 2>&1; then +# Cron 默认 PATH 往往很短,先补一份基础路径。 +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${PATH:-}" + +resolve_bun() { + # 1) PATH 可直接找到 bun + if command -v bun >/dev/null 2>&1; then + command -v bun + return 0 + fi + + # 2) 允许外部显式指定 BUN_BIN + if [[ -n "${BUN_BIN:-}" && -x "${BUN_BIN}" ]]; then + echo "${BUN_BIN}" + return 0 + fi + + # 3) 尝试加载 nvm 环境(root 与普通用户路径) + local nvm_candidates=("/root/.nvm/nvm.sh" "${HOME:-}/.nvm/nvm.sh") + local nvm_sh + for nvm_sh in "${nvm_candidates[@]}"; do + if [[ -s "${nvm_sh}" ]]; then + # shellcheck source=/dev/null + source "${nvm_sh}" >/dev/null 2>&1 || true + if command -v bun >/dev/null 2>&1; then + command -v bun + return 0 + fi + fi + done + + # 4) 直接扫描 nvm 目录中的 bun,优先版本号最高的 Node 目录 + local bun_candidates + bun_candidates=$(find /root/.nvm/versions/node "${HOME:-}/.nvm/versions/node" -type f -path "*/bin/bun" 2>/dev/null | sort -V || true) + if [[ -n "${bun_candidates}" ]]; then + echo "${bun_candidates}" | tail -n 1 + return 0 + fi + + return 1 +} + +if ! BUN_CMD="$(resolve_bun)"; then echo "[ERROR] bun 未安装或不在 PATH 中" exit 1 fi @@ -20,8 +61,9 @@ if [[ ! -d .git ]]; then fi echo "[INFO] 项目目录: $PROJECT_DIR" +echo "[INFO] bun 路径: $BUN_CMD" echo "[INFO] 开始执行 daily 采集..." -bun run daily +"$BUN_CMD" run daily echo "[INFO] 添加产物到暂存区..." git add data pic