终端简介
终端配置文件是特定平台的 shell 配置,包含可执行路径、参数和其他自定义设置。默认情况下,会自动检测多个配置文件,可以进行自定义或添加。
示例个人资料:
{
"terminal.integrated.profiles.windows": {
"Custom Init": {
"path": "pwsh.exe",
"args": [
"-noexit",
"-file",
"${env:APPDATA}\\PowerShell\\custom-init.ps1"
]
}
},
"terminal.integrated.defaultProfile.windows": "Custom Init"
}
您可以在终端配置文件中使用变量,如上面的示例所示应用程序数据 环境变量。在 变量参考 主题中有一份可用变量的列表。
通过运行终端:选择默认配置文件命令来配置您的默认配置文件,该命令也可通过新的终端下拉菜单访问。

默认终端配置文件的 shell 默认为$SHELL在 Linux 和 macOS 以及 Windows 上的 PowerShell。VS Code 会自动检测大多数标准 shell,然后可以将其配置为默认 shell。
配置配置文件
要创建一个新的配置文件,请运行终端:选择默认配置文件命令,并激活 shell 右侧的配置按钮以基于此创建。这将在您的设置中添加一个新的条目,您可以手动调整settings.json文件。
可以使用以下任何一种方式创建配置文件路径或一个源,以及一系列可选参数。A源仅在Windows上可用,可以用于让VS Code检测安装的 eitherPowerShell或Git 提示符或者,一个路径直接指向 shell 可执行文件可以使用。以下是些示例配置文件:
{
"terminal.integrated.profiles.windows": {
"PowerShell -NoProfile": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": ["-l"]
}
}
}
其他在配置文件中支持的参数包括:
覆盖名称: 一个布尔值,表示是否用静态配置文件名称替换检测到正在运行的程序的动态终端标题。环境: 一个定义环境变量及其值的地图,设置该变量为无从环境中删除它。这可以通过使用配置所有配置文件来实现终端.集成环境.<平台>设置。图标:用于个人资料的图标ID。颜色: 图标样式主题颜色ID。
Path、args 和 env 都支持解析变量
默认配置文件可以手动定义,使用终端.集成.默认配置文件.*设置。这应该设置为现有配置文件的名称:
{
"terminal.integrated.profiles.windows": {
"my-pwsh": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.defaultProfile.windows": "my-pwsh"
}
集成终端外壳以 VS Code 的权限运行。如果你需要以提升(管理员)或不同权限运行外壳命令,请使用平台工具,例如runas.exe在终端内。
删除内置配置文件
要删除内置配置文件并防止其在新终端下拉菜单中显示,请将配置文件的名称设置为无例如,要删除Git 提示符在Windows上设置个人资料,请使用此设置:
{
"terminal.integrated.profiles.windows": {
"Git Bash": null
}
}
配置任务/调试配置文件
默认情况下,任务/调试功能将使用默认配置文件。如果你的默认配置有沉重的PowerShell启动脚本或非POSIX兼容的外壳,这可能不是最佳选择。要配置一个仅在调试/任务功能中使用的配置文件,请使用终端.集成.自动化配置文件.<平台>设置:
{
"terminal.integrated.defaultProfile.osx": "fish",
// 使用一个完全 POSIX 兼容的 shell,避免在任务和调试中运行复杂的 ~/.config/fish/config.fish
//
"terminal.integrated.automationProfile.osx": {
"path": "/bin/sh"
}
}
配置文件特定的键盘快捷键
通过特定的键盘快捷键可以使用工作台.操作.终端.新建带配置文件 命令。该命令接受一个配置文件名称和可选的位置作为参数。例如,将 Ctrl+Shift+T 绑定用于打开终端 zsh个人资料:
{
"键": "ctrl+shift+t",
"命令": "workbench.action.terminal.newWithProfile",
"参数": {
"配置文件名": "zsh",
"位置": "编辑器"
}
}
不安全配置文件检测
某些 shell 默认安装在不安全的路径中,例如在 Windows 环境下可能被其他用户写入的路径。VS Code 会检测到这些,但在通过 终端:选择默认配置文件 命令明确配置之前,不会将其作为有效的配置文件暴露。在配置不安全的配置文件时,添加之前会有警告:

指挥官
Cmder本身是一个终端,但你可以使用VS Code中的Cmder shell,使用以下配置文件:
{
"terminal.integrated.profiles.windows": {
"cmder": {
"path": "C:\\WINDOWS\\System32\\cmd.exe",
"args": ["/K", "C:\\cmder\\vendor\\bin\\vscode_init.cmd"]
}
},
"terminal.integrated.defaultProfile.windows": "cmder"
}
此配置文件应会在以下情况下自动加载CMDER_ROOT 环境变量已设置。如果安装在 不安全的配置文件 也将被检测到C:\cmder。您可以参考Cmder的维基获取更多信息。
赛冠威林
Cygwin本身是一个终端,但你可以使用Cygwin在VS Code中使用以下配置文件的 shell:
{
"terminal.integrated.profiles.windows": {
"Cygwin": {
"path": "C:\\cygwin64\\bin\\bash.exe",
"args": ["--login"]
}
},
"terminal.integrated.defaultProfile.windows": "Cygwin"
}
此配置文件在默认路径安装时应自动检测为不安全配置文件C:\赛冠Windows文件系统或C:\cygwin64输入:.
Git 提示符
A Git Bash 的一个限制是,当 VS Code 使用 bash.exe(外壳)而不是 git-bash.exe(终端)时,历史记录不会在外壳会话之间保留。你可以通过在你的 ~/.bashrc或~/.bash_profile文件:
导出 PROMPT_COMMAND='历史记录 -a'
这将导致外壳调用历史 -a每当提示打印时,会将会话的当前会话命令刷新到历史记录文件中。
MSYS2
MSYS2 的 bash shell 可以通过以下配置文件进行配置:
{
"terminal.integrated.profiles.windows": {
"bash (MSYS2)": {
"path": "C:\\msys64\\usr\\bin\\bash.exe",
"args": ["--login", "-i"],
"env": { "CHERE_INVOKING": "1" }
}
}
}
这个请将以下网页文本翻译成中文,只输出翻译结果,不输出任何其他解释,若文本已经是中文了,则直接用中文复述一遍。翻译结果保持格式不变。输入:CHере_INVOKING 环境变量 用于指示登录初始化脚本保留工作目录,而不是在 $HOME输入:.
此配置文件在默认路径安装时应自动检测为不安全配置文件C:\\msys64输入:.
Windows PowerShell
当安装了 PowerShell 6+ 时,Windows PowerShell 不会默认包含在配置文件列表中。要将 Windows PowerShell 添加为配置文件,请在新终端下拉菜单中选择 选择默认配置文件 选项并选择 Windows PowerShell 项。这将配置配置文件并将其设置为默认配置文件。
适用于 Linux 和 Windows 的 Windows 子系统
在本地机器上运行 VS Code 时,Windows Subsystem for Linux 壳应该会自动检测到。根据您的设置,如果您安装了很多发行版,这可能会成为一个麻烦。为了对 WSL 配置文件进行更精细的控制,可以使用以下方法禁用自动检测
{
"terminal.integrated.profiles.windows": {
"Debian (WSL)": {
"path": "C:\\WINDOWS\\System32\\wsl.exe",
"args": [
"-d",
"Debian"
]
}
}
}
常见问题
为什么终端中有重复的路径?$PATH环境变量以及为什么在 macOS 上它们会被反转?
这在macOS上会发生,因为终端是通过VS Code的环境启动的。当VS Code第一次启动时,为了获取你的“开发环境”,它会以登录 shell的方式启动你配置的 shell,这会运行你的~/.profile输入:/~/.bash_profile输入:/~/.zprofile脚本。现在当终端启动时,它也作为一个登录 shell 运行,这将把标准路径放在前面(例如,/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) 并重新初始化你的 shell 环境。
为了更好地理解,您可以在操作系统内置的终端中启动一个内部登录 shell 来模拟正在发生的事情:
# 在 $PATH 的开头添加 /test
export PATH=/test:$PATH
# 输出 $PATH,/test 应该在开头
echo $PATH
# 以登录 shell 运行 bash
bash -l
# 输出 $PATH,值应该混乱
echo $PATH
不幸的是,与Linux不同,macOS的独立终端默认都以登录 shell 运行,因为当用户登录系统时,macOS 并不运行登录 shell。这鼓励了“不良行为”,例如在你的配置脚本中初始化别名,而它们应该存在于你的...输入:rc脚本在非登录 shell 中运行。
有两个直接的解决方法。第一个是设置"terminal.integrated.inheritEnv": false这将从终端的环境中剥离大多数环境变量,但保留一些重要的变量(例如主页,壳牌,临时目录等等)。
另一个解决方法是不再在终端中运行登录 shell,通过创建终端配置文件并设置其参数到[]如果你采用这个解决方案,你需要确保你的配置文件脚本中的任何别名都已转移到你的~/.bashrc输入:/~/.zshrc文件,因为别名只适用于它们被设置的 shell。