install.sh: after install, clear stale command hash + print 'hash -r' hint

A bash shell may still hash pmm to an old (now-deleted) path such as
~/.pmm/root/bin/pmm, so running pmm after a fresh install fails with
'No such file or directory' until 'hash -r'. Install scripts run in a
subshell and cannot clear the interactive shell's hash, so run hash -r
best-effort and print an explicit 'hash -r (zsh: rehash)' instruction.
这个提交包含在:
JGZYES
2026-09-05 14:58:20 +08:00
父节点 9fa23ac023
当前提交 0f86c331bf
修改 2 个文件,包含 20 行新增6 行删除
+10 -3
查看文件
@@ -47,11 +47,18 @@ fi
mkdir -p "$(dirname "$DEST")" mkdir -p "$(dirname "$DEST")"
cp "$TMP" "$DEST" && chmod +x "$DEST" && rm -f "$TMP" cp "$TMP" "$DEST" && chmod +x "$DEST" && rm -f "$TMP"
# ---- PATH 提示 ---- # ---- 安装完成:提示如何让当前 shell 立即用上新 pmm ----
DEST_DIR="$(dirname "$DEST")"
case ":$PATH:" in case ":$PATH:" in
*":$(dirname "$DEST"):"*) ;; *":$DEST_DIR:"*) ;;
*) echo "pmm: 请将 $(dirname "$DEST") 加入 PATH(或重新登录 shell)" ;; *) echo "pmm: 请将 $DEST_DIR 加入 PATH(或重新登录 shell)" ;;
esac esac
# 旧 shell 可能把 pmm 命中在已不存在的旧路径(如 ~/.pmm/root/bin/pmm),导致
# 报 "No such file or directory"。bash 用 `hash -r`、zsh 用 `rehash`
# 重新按 PATH 解析。子脚本无法清父 shell 的命中缓存,这里尽力清一次并给出提示。
hash -r 2>/dev/null || true
echo "pmm: 安装完成 -> $DEST" echo "pmm: 安装完成 -> $DEST"
echo "pmm: 若当前 shell 里 pmm 仍不可用/报错,请先执行: hash -r (zsh 用: rehash)"
"$DEST" -v 2>/dev/null || true "$DEST" -v 2>/dev/null || true
+10 -3
查看文件
@@ -47,11 +47,18 @@ fi
mkdir -p "$(dirname "$DEST")" mkdir -p "$(dirname "$DEST")"
cp "$TMP" "$DEST" && chmod +x "$DEST" && rm -f "$TMP" cp "$TMP" "$DEST" && chmod +x "$DEST" && rm -f "$TMP"
# ---- PATH 提示 ---- # ---- 安装完成:提示如何让当前 shell 立即用上新 pmm ----
DEST_DIR="$(dirname "$DEST")"
case ":$PATH:" in case ":$PATH:" in
*":$(dirname "$DEST"):"*) ;; *":$DEST_DIR:"*) ;;
*) echo "pmm: 请将 $(dirname "$DEST") 加入 PATH(或重新登录 shell)" ;; *) echo "pmm: 请将 $DEST_DIR 加入 PATH(或重新登录 shell)" ;;
esac esac
# 旧 shell 可能把 pmm 命中在已不存在的旧路径(如 ~/.pmm/root/bin/pmm),导致
# 报 "No such file or directory"。bash 用 `hash -r`、zsh 用 `rehash`
# 重新按 PATH 解析。子脚本无法清父 shell 的命中缓存,这里尽力清一次并给出提示。
hash -r 2>/dev/null || true
echo "pmm: 安装完成 -> $DEST" echo "pmm: 安装完成 -> $DEST"
echo "pmm: 若当前 shell 里 pmm 仍不可用/报错,请先执行: hash -r (zsh 用: rehash)"
"$DEST" -v 2>/dev/null || true "$DEST" -v 2>/dev/null || true