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

默认的终端配置文件壳层默认为$SHELL在 Linux 和 macOS 上,以及 PowerShell 在 Windows 上。VS Code 会自动检测大多数标准 shell,然后可以配置为默认。
配置配置文件
要创建新配置文件,运行终端选择默认配置文件命令,激活壳体右侧的配置按钮以作为基础。这会在你的设置中添加一个新条目,可以手动调整settings.json档案。
配置文件可以通过以下任一方式创建路径或者资料来源,以及一组可选参数。A资料来源仅在 Windows 上可用,可以用来让 VS Code 检测 以下PowerShell或Git Bash.或者,a路径可以直接指向壳级执行文件。以下是一些示例配置文件配置:
{
"terminal.integrated.profiles.windows": {
"PowerShell -NoProfile": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": ["-l"]
}
}
}
其他资料支持的论点包括:
覆盖名称:一个布尔值,表示是否替换动态终端标题,该标题检测运行的程序使用静态配置文件名称。环境:定义环境变量及其值的映射,将变量设为无效从环境中删除它。这可以通过terminal.integrated.env.<platform>环境。图标:用于配置文件的图标ID。颜色: 一个主题色彩ID,用于为图标做样式。
路径、args 和 env 都支持解析变量
默认配置文件可以通过terminal.integrated.defaultProfile.*设定。应设置为现有配置文件的名称:
{
"terminal.integrated.profiles.windows": {
"my-pwsh": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.defaultProfile.windows": "my-pwsh"
}
集成终端壳是在VS Code权限下运行的。如果你需要运行带有提升权限(管理员)或其他权限的shell命令,可以使用平台工具,比如runas.exe在终端内。
移除内置配置文件
要移除内置配置文件并防止它出现在新终端下拉菜单中,请将配置文件名称设置为无效.例如,去除Git BashWindows上的配置文件,使用以下设置:
{
"terminal.integrated.profiles.windows": {
"Git Bash": null
}
}
配置任务/调试配置文件
默认情况下,任务/调试功能会使用默认配置文件。如果你的默认程序有复杂的PowerShell启动脚本或不符合POSIX标准的shell,这可能就不太理想了。要配置配置文件仅用于调试/任务功能,请使用terminal.integrated.automationProfile.<platform>地点:
{
"terminal.integrated.defaultProfile.osx": "fish",
// Use a fully POSIX-compatible shell and avoid running a complex ~/.config/fish/config.fish
// for tasks and debug
"terminal.integrated.automationProfile.osx": {
"path": "/bin/sh"
}
}
配置文件专用键盘快捷键
通过专用键盘快捷键启动具有特定配置文件的终端,可以通过以下方式实现workbench.action.terminal.newWithProfile指挥部。该命令以配置文件名和可选位置作为参数。例如,绑定 Ctrl+Shift+T 以打开带有ZSH简介:
{
"key": "ctrl+shift+t",
"command": "workbench.action.terminal.newWithProfile",
"args": {
"profileName": "zsh",
"location": "editor"
}
}
不安全配置文件检测
某些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 本身是一个终端,但你可以在 VS Code 中使用以下配置文件的 Cygwin shell:
{
"terminal.integrated.profiles.windows": {
"Cygwin": {
"path": "C:\\cygwin64\\bin\\bash.exe",
"args": ["--login"]
}
},
"terminal.integrated.defaultProfile.windows": "Cygwin"
}
该配置文件安装在默认路径时应自动检测为不安全配置文件C:\cygwin或C:\cygwin64.
Git Bash
当VS Code使用bash.exe(壳)而非git-bash.exe(终端)时,Git Bash的一个限制是历史不会在壳会话间被保留。你可以通过在你的基础上添加以下内容来绕过这个问题~/.bashrc或~/.bash_profile档案:
export PROMPT_COMMAND='history -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" }
}
}
}
该CHERE_INVOKING环境变量用于告诉登录初始化脚本保留工作目录,而不是在$HOME.
该配置文件安装在默认路径时应自动检测为不安全配置文件C:\\msys64.
Windows PowerShell
安装PowerShell 6+后,Windows PowerShell默认不会包含在配置文件列表中。要将 Windows PowerShell 添加为配置文件,请在新终端下拉菜单中选择“选择默认配置文件”选项,然后选择 Windows PowerShell 项。这会配置配置文件并将其设置为默认。
女子超级联赛
在本地机器上运行VS Code时,Linux的Windows子系统外壳应该会自动被检测到。根据你的设置,如果你安装了很多发行版,这可能会有点麻烦。为了更细致地控制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,运行你的~/.个人资料/~/.bash_profile/~/.zprofile剧本。现在终端启动时,它也会作为登录壳运行,将标准路径放到前面(例如,/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin)并重新初始化你的壳环境。
为了更好地理解,你可以通过在作系统内置终端内启动内部登录壳来模拟发生的情况:
# Add /test to the beginning of $PATH
export PATH=/test:$PATH
# Echo $PATH, /test should be at the beginning
echo $PATH
# Run bash as a login shell
bash -l
# Echo $PATH, the values should be jumbled
echo $PATH
不幸的是,与Linux不同,独立的macOS终端默认都是登录壳运行,因为macOS在用户登录系统时不会运行登录壳。这鼓励了“不良行为”,比如在个人资料脚本中初始化别名,而它们本该存在于你的个人资料中RC脚本就是在非登录shell上运行的。
对此有两个直接的解决办法。第一种是设置“terminal.integrated.inheritEnv”: false该变量将剥离终端环境中的大部分环境变量,仅保留一些重要变量(例如首页,壳牌,TMPDIR,等等)。
另一个解决办法是通过创建终端配置文件并设置其args到。如果你采用这个修复方法,你需要确保配置文件脚本中的所有别名都迁移到了你的[]~/.bashrc/~/.zshrc文件,因为别名只适用于它们设置的壳体。