You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11 LTSC下Git Bash的STDERR重定向失效求助

问题分析与解决方案

可能原因

Windows 11 LTSC版本在控制台子系统、管道处理机制上和普通Win11存在差异,导致Git Bash(MINGW64环境)中2>&1重定向时,git subtree pull的输出缓冲区无法正常刷新,进而引发脚本卡住。另外,Git 2.51.0.windows.1的MINGW64运行时在LTSC环境下可能存在STDERR/STDOUT管道关联的兼容性问题。

解决办法

1. 强制刷新输出缓冲区

在重定向后添加管道调用cat,强制输出流刷新,避免缓冲区阻塞:

check=( $(git subtree pull --prefix=$3 $2 $1 --squash 2>&1 | cat) )

2. 提前全局重定向STDERR到STDOUT

如果脚本中多个命令需要重定向,可以在脚本开头先执行:

exec 2>&1

之后所有命令的STDERR都会自动转到STDOUT,无需单独添加重定向。

3. 排查交互阻塞场景

检查是否存在Git需要交互输入的场景(比如凭证验证),重定向后交互被抑制导致卡住,可先禁用自动凭证弹窗:

git config --global core.askpass ""

若确实需要凭证,可改用环境变量传递或配置Git凭证管理器。

4. 更换Git版本

尝试降级到在普通Win11上正常运行的Git版本(比如2.50.x系列),或升级到最新稳定版,验证是否为特定Git版本与LTSC的兼容性问题。

5. 调整数组赋值方式

先将输出捕获为字符串,再转换为数组,避免直接在数组赋值时的管道阻塞:

check=$(git subtree pull --prefix=$3 $2 $1 --squash 2>&1)
check=($check)

内容的提问来源于stack exchange,提问作者silvio.ledergerber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:42:13