diff --git a/deploy/install.sh b/deploy/install.sh index 55e8fb8..040c1d5 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -79,6 +79,17 @@ if [[ $GIT_HOOKS -eq 1 ]]; then # 所以这里**自己**判一次 `git` 在不在。否则缺 git 时得到的是 bash 的 # `git: command not found`(退出码 127)—— 而本仓约定"环境问题=2、且要给人话"。 # (这是我把本块前移时实测撞出来的:127 不在本仓的退出码词汇表里。) + # + # ⚠️⚠️ 但只补 ① 不够 —— 前移同时**丢掉了第二条**保证(pi 2026-09-25 实测报回:活回归): + # **env-defaults ④ 的 PATH 归一化**(PATH 可能不含 /usr/bin)。 + # 只补 ① 会得到**假红**:git 明明装在 /usr/bin,却因 PATH 里没有它而报"找不到 git", + # 且**真的没装上**(旧位置 rc=0 装上 / 前移后 rc=2 未装)。 + # ★ 这一条比 ① 更隐蔽:① 缺了是**漏**(少一条检查)② 缺了是**误**(凭空假红)。 + # 规则与 env-defaults.sh:124-130 的 ④ 逐字相同(且同样幂等)。 + case ":${PATH:-}:" in + *:/usr/bin:*) : ;; + *) PATH="${PATH:+$PATH:}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"; export PATH ;; + esac if ! command -v git >/dev/null 2>&1; then echo " [FAIL] 环境不足:找不到 git(--git-hooks 只用 git,但它不在 PATH 里)" >&2 echo " 药方:装 git,或把它的目录加进 PATH 后重跑。" >&2