run 4 里 bash 已经换成 Git for Windows(那一步本身就成功了),但 dtolnay/rust-toolchain
还是挂在它的脚本里:
log=$(mktemp)
mktemp: failed to create file via template '/tmp/tmp.XXXXXXXXXX': Permission denied
原因:这个 job 的环境里 TEMP/TMP 是空的,而 Git Bash 的 /tmp 是从 TEMP 推出来的;
没有 TEMP,MSYS 就退回 <Git 安装目录>\tmp(C:\Program Files\Git\tmp,实测存在),
那个目录普通权限写不进去 —— mktemp 于是 Permission denied,不是"没目录"也不是
"没权限建文件"那么直白。
本机(就是这台 runner)复现 + 验证:
清空 TEMP/TMP -> mktemp: ... Permission denied(与 CI 一字不差)
TEMP/TMP 指向可写目录 -> mount 显示 "... on /tmp",mktemp 正常
rustup toolchain install / target add 也全过
修法:把 Windows job 里"改 PATH 那一步"扩成同时安排临时目录 —— 在 workspace 的同级
建 ci-tmp,把 TEMP/TMP/TMPDIR 写进 GITHUB_ENV,后续步骤(包括 composite action 内部
的 bash)都用它。