返回 Bug 清单
BUG-0220project-12高已修复powershell
PowerShell $PROFILE 膨胀至 29MB:Regex.Replace 替换串 $ 未转义 + 替换范围不含 hook 注释,每次安装复制整份 profile
发现:2026-10-01验证:2026-10-09置信度:70%
症状
每次打开 PowerShell 报海量语法解析错误;$PROFILE 文件 29MB;marker 成对出现上万次
根因
两个缺陷叠加:① .NET Regex.Replace 的替换字符串里 $ 是特殊字符($` 代表匹配前的全部文本),hookBody 含 $ 未转义,替换结果被展开成 profile 前文;② 替换 pattern 只匹配 marker 之间的代码体,不含注释行,导致旧 hook 未被完整替换。每次运行 install.ps1 都把整份 profile(含原有 4 行)复制一遍,16,275 次累积后达 29,664,059 字符 / 703,086 行 / 21,014 个语法错误,每次开终端报大量解析错误。
修复方案
替换串先做 $ 转义($hookBody.Replace('$','$$'))或改用 MatchEvaluator 委托;替换 pattern 必须覆盖含注释在内的完整 hook 块;安装脚本加幂等断言(安装后 marker 计数必须为 1)。
错误签名
function global:prompt 16275 copies $PROFILE 29MB 703086 lines syntax errors技术信息
来源项目
project-12
涉及文件
scripts/hooks/install.ps1, docs/INCIDENT-20261001-PowerShell-profile膨胀.md
标签
powershell, regex-replace, 幂等安装, profile, 事故复盘...