Azure Pipeline Windows代理无法通过WSL运行Bash脚本的问题
解决Azure Pipeline Windows代理上WSL脚本执行失败的问题
问题根源
Azure Pipeline的Windows代理是通过系统账户运行的,它的WSL环境和你本地用户的WSL环境完全隔离。你本地用户安装的Ubuntu,系统账户根本看不到,所以执行bash脚本时会提示没有安装WSL发行版。
可行解决方案
1. 为系统账户部署WSL发行版
- 用管理员权限打开PowerShell,执行命令直接安装Ubuntu(无需通过微软商店):
wsl --install -d Ubuntu - 安装完成后,初始化系统账户的WSL环境:
按照提示设置初始用户名和密码,完成环境初始化即可。wsl -d Ubuntu --user root
2. 改用PowerShell脚本替代Bash脚本
既然是Windows代理,完全可以跳过WSL,直接用原生PowerShell实现相同逻辑,步骤更简单:
$Pat = "myPat" $B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Pat)) git -c "http.https://<url>.extraheader=AUTHORIZATION: basic $B64Pat" submodule update --init --recursive
这个方案不需要配置任何WSL环境,直接在Windows原生环境运行,兼容性更稳定。
3. 关于Docker代理作为默认发行版的疑问
Docker Desktop自带的WSL发行版(如docker-desktop)是专为Docker运行设计的,没有完整的用户环境和必要工具(比如git),不适合用来运行你的git子模块更新脚本。所以不建议将其设为默认发行版来解决当前问题。
内容的提问来源于stack exchange,提问作者Intolighter
相关产品推荐
相关产品推荐

