如何将Git SDK的输出重定向到父级Powershell会话?
问题原因
C:\git-sdk-64\git-bash.exe 是GUI封装的终端程序,不属于控制台子系统程序,因此PowerShell的-NoNewWindow参数、标准输出重定向规则对其不生效,每次调用都会创建独立窗口,输出无法被当前PowerShell会话捕获。
解决方案
直接调用Git SDK内置的控制台原生bash程序,路径为C:\git-sdk-64\usr\bin\bash.exe,该程序的输出会直接返回到当前PowerShell会话,不会弹出新窗口。
基础调用示例:
& 'C:\git-sdk-64\usr\bin\bash.exe' -lc 'git status'
如果需要将输出保存到变量,可以直接赋值:
$gitOutput = & 'C:\git-sdk-64\usr\bin\bash.exe' -lc 'git status' # 后续可直接使用变量内容 Write-Host $gitOutput
扩展用法
执行make、gcc等工具的方式和git命令完全一致,直接把需要执行的命令传给bash即可:
# 执行gcc版本查询 & 'C:\git-sdk-64\usr\bin\bash.exe' -lc 'gcc --version' # 执行make编译 & 'C:\git-sdk-64\usr\bin\bash.exe' -lc 'cd /d/path/to/project && make clean && make'
如果嫌每次输入全路径麻烦,可以将C:\git-sdk-64\usr\bin加入系统环境变量Path,之后直接调用bash即可:
# 配置环境变量后简化调用 & bash -lc 'git status'
内容的提问来源于stack exchange,提问作者martorad
相关产品推荐
相关产品推荐

