Windows11下如何让VS Code DevContainer使用Bash执行命令?
解决VS Code DevContainer在Windows 11下用Bash执行Shell脚本的问题
问题场景
在装有WSL和Docker Desktop的Windows 11电脑上,通过VS Code DevContainer构建Matter项目时,执行“在容器中重新打开”操作触发initializeCommand时出现报错:
Running the initializeCommand from devcontainer.json... [10282 ms] Start: Run: C:\Windows\system32\cmd.exe /c .devcontainer/build.sh --tag matter-dev-environment:local --version 22 '.devcontainer' is not recognized as an internal or external command, operable program or batch file.
原因是默认情况下DevContainer用cmd.exe执行命令,而cmd无法识别Shell脚本语法。
解决方案
修改项目中.devcontainer/devcontainer.json文件的initializeCommand字段,明确指定用WSL的Bash来执行脚本:
- 打开
.devcontainer/devcontainer.json文件 - 找到
initializeCommand配置项,将原有命令替换为:
"initializeCommand": "wsl -e bash -c \".devcontainer/build.sh --tag matter-dev-environment:local --version 22\""
- 保存文件后,重新执行“在容器中重新打开”操作
补充说明
- 确保Docker Desktop已启用WSL集成(在Docker设置的
Resources > WSL Integration中开启对应WSL发行版的集成) - 若使用Git Bash等其他Bash环境,也可指定其路径,例如:
"initializeCommand": "\"C:\\Program Files\\Git\\bin\\bash.exe\" -c \".devcontainer/build.sh --tag matter-dev-environment:local --version 22\"",但WSL的Bash更适配Matter项目的构建环境
内容的提问来源于stack exchange,提问作者OlavT
相关产品推荐
相关产品推荐

