터미널 프로필
터미널 프로필은 실행 파일 경로, 인수 및 기타 사용자 정의로 구성된 플랫폼별 셸 구성입니다. 기본적으로 여러 프로필이 자동으로 감지되어 사용자 정의하거나 추가할 수 있습니다.
예제 프로필
{
"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 환경 변수를 사용하여 터미널 프로필에서 변수를 사용할 수 있습니다. 사용 가능한 변수 목록은 변수 참조 주제에 있습니다.
터미널: 기본 프로필 선택 명령을 실행하여 기본 프로필을 구성하십시오. 이 명령은 새 터미널 드롭다운에서도 액세스할 수 있습니다.

기본 터미널 프로필 셸은 Linux 및 macOS에서는 $SHELL, Windows에서는 PowerShell을 기본값으로 사용합니다. VS Code는 기본값으로 구성할 수 있는 대부분의 표준 셸을 자동으로 감지합니다.
프로필 구성
새 프로필을 만들려면 터미널: 기본 프로필 선택 명령을 실행하고 셸의 오른쪽에 있는 구성 버튼을 활성화하여 이를 기반으로 합니다. 이렇게 하면 settings.json 파일에서 수동으로 조정할 수 있는 새 항목이 설정에 추가됩니다.
프로필은 path 또는 source를 사용하여 생성할 수 있으며, 선택적 인수 집합도 사용할 수 있습니다. source는 Windows에서만 사용할 수 있으며 VS Code가 PowerShell 또는 Git Bash 설치를 감지하도록 하는 데 사용할 수 있습니다. 또는 셸 실행 파일에 직접 연결되는 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입니다.
경로, 인수 및 환경은 모두 변수 확인을 지원합니다.
기본 프로필은 terminal.integrated.defaultProfile.* 설정을 사용하여 수동으로 정의할 수 있습니다. 이 값은 기존 프로필의 이름으로 설정해야 합니다.
{
"terminal.integrated.profiles.windows": {
"my-pwsh": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.defaultProfile.windows": "my-pwsh"
}
통합 터미널 셸은 VS Code의 권한으로 실행됩니다. 관리자 권한 또는 다른 권한으로 셸 명령을 실행해야 하는 경우 터미널 내에서 runas.exe와 같은 플랫폼 유틸리티를 사용하십시오.
기본 제공 프로필 제거
기본 제공 프로필을 제거하고 새 터미널 드롭다운에 나타나지 않도록 하려면 프로필 이름을 null로 설정합니다. 예를 들어 Windows에서 Git Bash 프로필을 제거하려면 다음 설정을 사용하십시오.
{
"terminal.integrated.profiles.windows": {
"Git Bash": null
}
}
작업/디버그 프로필 구성
기본적으로 작업/디버그 기능은 기본 프로필을 사용합니다. 예를 들어 기본값이 무거운 PowerShell 시작 스크립트를 포함하거나 POSIX를 준수하지 않는 셸이 있는 경우 이는 이상적이지 않을 수 있습니다. 디버그/작업 기능에만 사용될 프로필을 구성하려면 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 명령으로 수행할 수 있습니다. 이 명령은 프로필 이름과 선택적 위치를 인수로 사용합니다. 예를 들어, zsh 프로필로 터미널을 열려면 Ctrl+Shift+T를 바인딩합니다.
{
"key": "ctrl+shift+t",
"command": "workbench.action.terminal.newWithProfile",
"args": {
"profileName": "zsh",
"location": "editor"
}
}
안전하지 않은 프로필 감지
특정 셸은 기본적으로 안전하지 않은 경로에 설치됩니다. 예를 들어 Windows 환경에서 다른 사용자가 쓸 수 있는 경로와 같습니다. VS Code는 이러한 셸을 계속 감지하지만 터미널: 기본 프로필 선택 명령을 통해 명시적으로 구성될 때까지 적절한 프로필로 노출하지 않습니다. 안전하지 않은 프로필을 구성할 때 추가 전에 경고가 표시됩니다.

Cmder
Cmder 자체는 터미널이지만 다음 프로필을 사용하여 VS Code에서 Cmder 셸을 사용할 수 있습니다.
{
"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에서 Cygwin 셸을 사용할 수 있습니다.
{
"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'
이렇게 하면 프롬프트가 인쇄될 때마다 셸이 history -a를 호출하여 세션의 현재 세션 명령을 백업 기록 파일로 플러시합니다.
MSYS2
MSYS2의 bash 셸은 다음 프로필로 구성할 수 있습니다.
{
"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 항목을 선택합니다. 이렇게 하면 프로필이 구성되고 기본값으로 설정됩니다.
WSL
로컬 컴퓨터에서 VS Code를 실행할 때 Windows Subsystem for Linux 셸은 자동으로 감지되어야 합니다. 설정에 따라 설치된 배포판이 많으면 성가실 수 있습니다. WSL 프로필을 더 세밀하게 제어하려면 자동 감지를 terminal.integrated.useWslProfiles 설정으로 비활성화할 수 있습니다. 그런 다음 WSL 셸을 수동으로 구성하는 방법은 다음과 같습니다.
{
"terminal.integrated.profiles.windows": {
"Debian (WSL)": {
"path": "C:\\WINDOWS\\System32\\wsl.exe",
"args": [
"-d",
"Debian"
]
}
}
}
자주 묻는 질문
터미널의 $PATH 환경 변수에 중복 경로가 있거나 macOS에서 역순인 이유는 무엇입니까?
VS Code의 환경을 사용하여 터미널을 시작하는 방식 때문에 macOS에서 발생할 수 있습니다. VS Code가 처음 시작될 때 "개발 환경"을 소싱하기 위해 구성된 셸을 로그인 셸로 실행하여 ~/.profile/~/.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 터미널이 기본적으로 로그인 셸로 실행됩니다. macOS는 사용자가 시스템에 로그인할 때 로그인 셸을 실행하지 않기 때문입니다. 이는 프로필 스크립트에서 별칭을 초기화하는 것과 같이 "나쁜 행동"을 유발하지만, 이러한 별칭은 비로그인 셸에서 실행되는 rc 스크립트에 있어야 합니다.
이를 위한 두 가지 직접적인 해결책이 있습니다. 첫 번째는 "terminal.integrated.inheritEnv": false를 설정하는 것입니다. 이렇게 하면 일부 중요한 환경 변수(예: HOME, SHELL, TMPDIR 등)를 제외한 대부분의 환경 변수가 터미널 환경에서 제거됩니다.
다른 해결책은 args를 []로 설정하여 터미널 프로필을 만들어 터미널에서 로그인 셸을 더 이상 실행하지 않는 것입니다. 이 해결책을 선택하면 프로필 스크립트의 모든 별칭을 ~/.bashrc/~/.zshrc 파일로 이동해야 합니다. 별칭은 설정된 셸에만 적용되기 때문입니다.