PATH에 쓴 ~가 홈 디렉토리를 가리키지 않을 수 있다
원제 The tilde in your PATH may not be your HOME
154 포인트댓글 87

Key Point
PATH 설정에서 흔히 하는 실수가 보안 문제로 이어질 수 있기 때문에, 개발 환경 구성 시 검증할 필요가 있다.
핵심 요약
- export PATH="$PATH:~/.local/bin/"처럼 따옴표로 감싼 PATH 설정에서는 틸드(~)가 홈 디렉토리로 확장되지 않는다.
- Bash 문서에 따르면 틸드 확장은 따옴표 없는 입력과 변수 할당에서 = 또는 : 직후에만 작동하는데, 따옴표로 감싸면 이 조건에 해당하지 않는다.
- 결과적으로 /home//.local/bin이 아니라 현재 디렉토리의 .//.local/bin이 PATH에 추가되어 사용자의 홈 디렉토리는 전혀 관련되지 않는다.
- 실제 예시에서 ./~/.local/bin/에 바이너리를 저장하면 PATH에 등록된 경로로 그것이 실행되어 홈 디렉토리의 파일을 우회할 수 있다.
- 해결 방법은 export PATH="$PATH:$HOME/.local/bin/"처럼 $HOME 변수를 명시적으로 사용하는 것이다.
- 따옴표 없는 export PATH=$PATH:~/.local/bin은 Bash와 Zsh에서 작동하지만, 공백이 섞이면 깨질 수 있어 안정적이지 않다.
- PATH에 틸드가 포함되었는지 확인하려면 echo "$PATH" | grep -- '~' 명령으로 점검하고, 발견되면 .bashrc/.zshrc/.profile에서 ~를 $HOME으로 바꾸면 된다.