Windows 기본 터미널(Windows Terminal)은 탭, 분할, 프로필 관리까지 다 되는 훌륭한 터미널이다. WSL과의 통합도 잘 되어 있고, 기본 셸로 Ubuntu나 zsh를 써도 큰 불편은 없다.
다만, WSL에서 새 탭을 열면 항상 홈 디렉토리(~)로 시작하는 점이 불편하다.
예를 들어 /home/mytory/workspace에서 작업 중인데 새 탭을 열면 홈 폴더에서 시작하므로 다시 cd로 이동해야 한다.
문제는 Windows Terminal의 설정만으로는 이를 해결할 수 없다는 점이다.
셸을 이용한 해결책
Windows Terminal의 settings.json에서는:
$PWD같은 셸 변수를 사용할 수 없다startingDirectory로 현재 디렉토리를 동적으로 지정할 수도 없다
그래서 접근을 바꿔야 한다.
핵심 아이디어는 Windows Terminal을 다시 호출하되 wsl --cd "$PWD" 로 현재 디렉토리를 직접 전달하는 것이다.
그리고 이 작업을 .bashrc 또는 .zshrc에 넣어서 셸 레벨에서 단축키처럼 동작하도록 만들면 된다.
스니펫
아래 코드를 .bashrc 또는 .zshrc에 추가한다. (bash / zsh 자동 감지)
적용하고 나면 Ctrl+T로 현재 디렉토리 기준으로 새 탭을, Ctrl+G로 새 분할 화면을 열 수 있다.
# ===== WSL Windows Terminal Extension =====
# Ctrl+T → 현재 디렉토리로 새 탭
# Ctrl+G → 현재 디렉토리로 분할
# WSL + Windows Terminal 환경에서만 동작
if [ -n "$WSL_DISTRO_NAME" ] && [ -n "$WT_SESSION" ]; then
wt_new_tab_here() {
cmd.exe /c wt -w 0 nt wsl -d "$WSL_DISTRO_NAME" --cd "$PWD" > /dev/null 2>&1
}
wt_split_here() {
cmd.exe /c wt -w 0 sp wsl -d "$WSL_DISTRO_NAME" --cd "$PWD" > /dev/null 2>&1
}
# zsh
if [ -n "$ZSH_VERSION" ]; then
zle -N wt_new_tab_here
zle -N wt_split_here
bindkey '^T' wt_new_tab_here
bindkey '^G' wt_split_here
fi
# bash
if [ -n "$BASH_VERSION" ]; then
bind -x '"\C-t": wt_new_tab_here'
bind -x '"\C-g": wt_split_here'
fi
fi
# ===========================================
적용하려면 탭을 새로 시작하거나 아래 명령으로 환경설정을 덮어쓴다.
source ~/.bashrc
# 또는
source ~/.zshrc
코드 해설
환경 체크
[ -n "$WSL_DISTRO_NAME" ] && [ -n "$WT_SESSION" ]
- WSL 안에서 실행 중인지
- Windows Terminal에서 실행 중인지
둘 다 만족할 때만 기능이 활성화된다.
현재 배포판 자동 감지
"$WSL_DISTRO_NAME"
현재 실행 중인 WSL 배포판 이름이 자동으로 들어 있다.
따라서:
- Ubuntu면 Ubuntu
- Debian이면 Debian
- 다른 배포판이면 그대로
별도 설정이 필요 없다.
현재 디렉토리 전달
--cd "$PWD"
현재 작업 중인 리눅스 경로를 그대로 새 탭에 전달한다.
출력 제거
> /dev/null 2>&1
cmd.exe의 UNC 경고(Windows에서\\wsl$\Ubuntu\...같은 네트워크 경로(UNC 경로)를 현재 작업 디렉토리로 사용할 수 없다고 하는 메시지) 제거- 불필요한 Job 메시지 제거
- 프롬프트 깨끗하게 유지
최종 결과
- Ctrl+T: 현재 디렉토리 기준 새 탭
- Ctrl+G: 현재 디렉토리 기준 화면 분할
결론
Windows Terminal은 좋은 도구지만, WSL과 함께 쓸 때 “현재 폴더에서 새 탭 열기” 기능이 기본 제공되지 않는 점은 아쉽다.
다행히 셸 레벨에서 우회할 수 있고, 한 번 설정해 두면 이후에는 편리하게 사용할 수 있다.










댓글 남기기