1. 문제.

Windows Terminal에서 Git Bash를 쓰다 보면, 탭 바의 + 버튼으로 새 탭을 열 때마다 홈 디렉터리로 돌아간다. 지금 작업하던 경로를 그대로 이어받아 새 탭을 열고 싶다.

2. 새 탭과 탭 복제.

+ 버튼(새 탭)은 항상 프로필의 startingDirectory 값으로 열리므로 현재 경로를 무시한다. 반면 탭 복제(Duplicate Tab)는 현재 셸이 있는 경로를 물려받는다. 즉 "현재 경로에서 열기"의 정체는 새 탭이 아니라 탭 복제.

3. Git Bash가 자기 경로를 알리게 하기.

Git Bash는 기본적으로 자기 현재 위치를 터미널에 보고하지 않는다. 셸이 디렉터리를 옮길 때마다 그 경로를 이스케이프 신호(OSC)로 터미널에 알려주도록 PROMPT_COMMAND를 설정. Git Bash를 열고 아래 한 줄을 ~/.bashrc에 추가한다.

echo 'export PROMPT_COMMAND='\''printf "\e]9;9;%s\e\\" "$(cygpath -w "$PWD")"'\''' >> ~/.bashrc

cygpath -w는 Git Bash식 경로(/d/foo)를 Windows식 경로(D:\foo)로 바꿔 넘겨주는 역할이고, \e]9;9;...\e\\ 가 Windows Terminal이 알아듣는 "현재 디렉터리는 여기다"라는 신호.

5. 적용과 확인.

추가한 설정을 지금 세션에 바로 반영한다.

source ~/.bashrc

제대로 들어갔는지는 cat으로 확인.

cat ~/.bashrc
# ...
# export PROMPT_COMMAND='printf "\e]9;9;%s\e\\" "$(cygpath -w "$PWD")"'

6. 사용.

이제 Git Bash에서 원하는 폴더로 이동한 뒤, 탭 바를 우클릭하고 "탭 복제"를 고르면 그 경로 그대로 새 탭이 열린다. 단축키 Ctrl + Shift + D가 기본으로 탭 복제에 걸려있다.

7. 신호가 안 먹힐 때.

\e]9;9; 방식은 Windows Terminal의 확장 신호라 버전에 따라 안 먹을 수 있다. 그럴 땐 표준인 OSC 7 방식으로 바꾼다. ~/.bashrc의 그 줄을 아래로 교체하면 된다.

export PROMPT_COMMAND='printf "\e]7;file://%s%s\e\\" "$HOSTNAME" "$(cygpath -w "$PWD" | sed "s|\\\\|/|g")"'

여기서는 경로의 역슬래시(\)를 sed로 슬래시(/)로 바꿔 file:// URL 형태로 넘긴다. 교체 후 다시 source ~/.bashrc로 적용하고 탭 복제로 확인한다.