VSCode内置终端默认使用系统默认shell:Linux/macOS为$SHELL指定的shell(如zsh),Windows优先PowerShell,无则fallback到cmd.exe;通过terminal.integrated.profiles.和defaultProfile.配置具体shell路径与参数。

VSCode 内置终端默认用什么 shell?
VSCode 的集成终端(Ctrl+`)在不同系统上默认调用不同的 shell:bash(Linux/macOS)、PowerShell 或 Command Prompt(Windows)。它不直接运行 VSCode 自己的解释器,而是复用系统已安装的终端程序。
关键点在于:VSCode 只做“容器”,真正执行命令的是你配置的 shell 进程。所以自定义工具本质是控制这个进程的启动方式和环境。
- Windows 上若没装 PowerShell,默认 fallback 到
cmd.exe;但新版 VSCode 会优先尝试powershell.exe - macOS Catalina 及以后默认 shell 是
zsh,VSCode 会自动检测并使用它,而非旧的bash - Linux 发行版差异大,VSCode 依赖
$SHELL环境变量,不是硬编码
如何切换终端 shell 并指定路径?
通过设置 terminal.integrated.defaultProfile.* 和 terminal.integrated.profiles.* 控制具体 shell 实例。注意:VSCode 1.78+ 已弃用旧的 terminal.integrated.shell.*,改用 profile 模型。
例如,在 settings.json 中添加:
"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"args": ["--login", "-i"]
},
"WSL": {
"path": "wsl.exe",
"args": ["-d", "Ubuntu-22.04"]
}
},
"terminal.integrated.defaultProfile.windows": "Git Bash"
-
path必须是可执行文件绝对路径(Windows 注意双反斜杠或正斜杠) -
args是传给该程序的启动参数,比如--login -i让 bash 读取~/.bashrc - macOS/Linux 用户应配置
terminal.integrated.profiles.linux或.osx,而非.windows - 改完设置后需关闭并重新打开终端面板,或点击右上角「+」旁下拉箭头手动选择新 profile
怎样让终端自动执行初始化命令(如加载 alias、cd 到项目根)?
VSCode 终端本身不提供“启动脚本”字段,但可以通过 shell 的初始化机制间接实现——关键是让所选 shell 在启动时自动运行你的命令。
- 对
bash/zsh:修改~/.bashrc或~/.zshrc,末尾追加cd /path/to/project或source ~/my-aliases.sh - 对 Windows
PowerShell:编辑$PROFILE(运行notepad $PROFILE创建),加入Set-Location C:\myproject - 避免在
args里硬写-c "cd /xxx && exec bash":这会导致终端无法持续交互(执行完就退出) - 如果只想对某个工作区生效,可在工作区
.vscode/settings.json中覆盖terminal.integrated.env.*注入环境变量,再由 shell 配置文件条件判断
为什么自定义命令行工具后,Ctrl+Shift+P > “Terminal: Run Task” 不生效?
这是常见混淆点:Terminal: Run Task 调用的是 tasks.json 定义的构建/运行任务,和集成终端的 shell 无关。它走的是 VSCode 的 task runner 流程,底层可能调用 shell,但不复用你配置的 terminal profile。
- 想让任务使用特定 shell,得在
tasks.json的options.shell字段显式指定,例如:{"executable": "C:\\Program Files\\Git\\bin\\bash.exe", "args": ["--login", "-c"]} - 更简单的方式:把要执行的命令封装成脚本(
build.sh或deploy.ps1),然后在 task 中调用它 - 注意权限问题:Windows 上 PowerShell 默认禁止执行本地脚本,需先运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
真正容易被忽略的是 profile 名称大小写敏感,以及 Windows 路径中空格未用引号包裹导致启动失败——这些错误不会报红,终端直接黑屏或闪退。










