終端配置檔案
終端配置檔案是特定於平臺的 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"
}
您可以在終端配置檔案中使用變數,如上面示例中所示的 APPDATA 環境變數。在 變數參考 主題中可以找到可用變數的列表。
透過執行 Terminal: Select Default Profile 命令來配置您的預設配置檔案,該命令也可以透過新的終端下拉選單訪問。

預設終端配置檔案 Shell 在 Linux 和 macOS 上預設為 $SHELL,在 Windows 上預設為 PowerShell。VS Code 會自動檢測大多數標準 Shell,然後可以將其配置為預設。
配置配置檔案
要建立新配置檔案,請執行 Terminal: Select Default Profile 命令,然後啟用右側的配置按鈕以基於現有 Shell 進行建立。這將在您的設定中新增一個新條目,可以在 settings.json 檔案中手動進行調整。
可以使用 path 或 source 來建立配置檔案,以及一組可選引數。source 僅在 Windows 上可用,可用於讓 VS Code 檢測 PowerShell 或 Git Bash 的安裝。或者,也可以使用直接指向 Shell 可執行檔案的 path。以下是一些示例配置檔案配置:
{
"terminal.integrated.profiles.windows": {
"PowerShell -NoProfile": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": ["-l"]
}
}
}
配置檔案支援的其他引數包括:
overrideName:一個布林值,指示是否用靜態配置檔名稱替換檢測正在執行程式的動態終端標題。env:一個定義環境變數及其值的對映,將變數設定為null以從環境中刪除它。這可以使用terminal.integrated.env.<platform>設定來為所有配置檔案配置。icon:用於配置檔案的圖示 ID。color:用於樣式化圖示的主題顏色 ID。
Path、args 和 env 都支援 解析變數。
可以透過 terminal.integrated.defaultProfile.* 設定手動定義 **預設配置檔案**。應將其設定為現有配置檔案的名稱。
{
"terminal.integrated.profiles.windows": {
"my-pwsh": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.defaultProfile.windows": "my-pwsh"
}
整合終端 Shell 以 VS Code 的許可權執行。如果您需要以提升的(管理員)許可權或不同的許可權執行 Shell 命令,請在終端中使用 runas.exe 等平臺實用程式。
刪除內建配置檔案
要刪除內建配置檔案並防止其出現在新終端下拉選單中,請將配置檔名稱設定為 null。例如,要在 Windows 上刪除 Git Bash 配置檔案,請使用此設定:
{
"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 仍會檢測到這些 Shell,但不會將它們公開為合適的配置檔案,直到透過 Terminal: Select Default Profile 命令顯式配置它們。配置不安全配置檔案時,會在新增之前顯示警告。

Cmder
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 的 wiki 以獲取更多資訊。
Cygwin
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(Shell)而不是 git-bash.exe(終端)時,Git Bash 的一個限制 是歷史記錄不會在 Shell 會話之間保留。您可以透過將以下內容新增到您的 ~/.bashrc 或 ~/.bash_profile 檔案來解決此問題:
export PROMPT_COMMAND='history -a'
這將導致 Shell 在每次列印提示符時呼叫 history -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 新增為配置檔案,請在新的終端下拉選單中選擇 Select Default Profile 選項,然後選擇 Windows PowerShell 項。這將配置該配置檔案並將其設定為您的預設。
WSL
在本地計算機上執行 VS Code 時,應自動檢測 Windows Subsystem for Linux (WSL) Shell。根據您的設定,如果您安裝了許多發行版,這可能會造成麻煩。為了更精細地控制 WSL 配置檔案,可以透過 terminal.integrated.useWslProfiles 設定停用自動檢測,然後這是一個手動配置 WSL Shell 的示例:
{
"terminal.integrated.profiles.windows": {
"Debian (WSL)": {
"path": "C:\\WINDOWS\\System32\\wsl.exe",
"args": [
"-d",
"Debian"
]
}
}
}
常見問題
為什麼終端的 $PATH 環境變數中有重複的路徑,以及/或為什麼它們在 macOS 上是反向的?
在 macOS 上,這可能發生在終端使用 VS Code 的環境啟動時。當 VS Code 首次啟動時,為了載入您的“開發環境”,它會將您配置的 Shell 作為 **登入 Shell** 啟動,該 Shell 會執行您的 ~/.profile/~/.bash_profile/~/.zprofile 指令碼。現在當終端啟動時,它也作為登入 Shell 執行,這會將標準的路徑放在前面(例如,/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin)並重新初始化您的 Shell 環境。
為了更好地理解,您可以模擬正在發生的事情,透過在您作業系統的內建終端中啟動一個內部登入 Shell 來完成。
# 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 上的獨立終端預設都作為登入 Shell 執行,因為 macOS 在使用者登入系統時不會執行登入 Shell。這會鼓勵“不良行為”,例如在您的配置檔案指令碼中初始化別名,而它們應該存放在您的 rc 指令碼中,因為 rc 指令碼會在非登入 Shell 上執行。
有兩種直接的解決方法。第一種是設定 "terminal.integrated.inheritEnv": false,它將從終端環境中剝離大多數環境變數,但保留一些重要的環境變數(如 HOME、SHELL、TMPDIR 等)。
另一種解決方法是透過建立終端配置檔案並將其 args 設定為 [] 來停止在終端中執行登入 Shell。如果您採用此方法,您將需要確保將配置檔案指令碼中的任何別名移至您的 ~/.bashrc/~/.zshrc 檔案,因為別名僅適用於設定它們的 Shell。