Github Action Windows runner 如何从PATH中移除所有sh.exe
GitHub Windows Runner移除PATH中sh.exe相关路径解决方案
失败原因说明
- 第一次尝试使用的语法不符合PowerShell(Windows runner默认shell)的语法规则,无法直接通过
set GITHUB_PATH -=的方式移除路径 - 第二次尝试在bash环境下使用了Windows cmd专属的变量替换语法
%PATH:xxx=%,bash无法识别该语法导致报错
可行方案1:过滤PATH移除含sh.exe的目录(推荐,无文件删除操作)
使用PowerShell执行路径过滤,修改后的值同步到后续所有步骤:
- name: 移除包含sh.exe的PATH路径 shell: powershell run: | # 拆分当前PATH为数组 $pathArr = $env:PATH -split ';' | Where-Object { $_ } # 过滤掉所有包含sh.exe的目录 $validPaths = $pathArr | Where-Object { -not (Test-Path (Join-Path $_ "sh.exe") -ErrorAction SilentlyContinue) } # 拼接为新的PATH $newPath = $validPaths -join ';' # 更新当前步骤的PATH $env:PATH = $newPath # 同步到后续所有步骤 echo "PATH=$newPath" >> $env:GITHUB_ENV
可行方案2:直接删除所有sh.exe文件(简单高效)
如果允许修改runner内置文件,可以直接查找删除所有sh.exe:
- name: 删除所有sh.exe文件 shell: powershell run: | Get-ChildItem -Path C:\ -Filter sh.exe -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue
内容的提问来源于stack exchange,提问作者Mizux
相关产品推荐
相关产品推荐

