250829
터미널 환경 마스터하기: Python 가상환경부터 PATH의 비밀까지
Python 코딩 연습 플랫폼 Exercism을 CLI로 시작하면서 마주친 여러 궁금증을 해결한 과정을 기록합니다. 이 과정에서 Python 가상환경의 올바른 사용법, VS Code와 터미널의 연동, 그리고 가장 중요하게는 PATH 환경 변수의 동작 원리를 깊이 이해할 수 있었습니다.
1. Python 프로젝트와 가상 환경: uv 활용법
Python 프로젝트를 시작할 때, 의존성 격리를 위해 가상 환경을 사용하는 것은 필수입니다.
핵심 원칙: 하나의 프로젝트 폴더에는 하나의 가상 환경을 만듭니다. 여러 프로젝트가 하나의 가상 환경을 공유하게 하지 않습니다.
가상 환경 생성 (
uv사용)Bash
# 해당 프로젝트 폴더로 이동 cd Exercism/python/hello-world # 가상 환경 생성 uv venv가상 환경 활성화
Bash
# macOS / Linux source .venv/bin/activate테스트 실행
unittest: Python 내장 모듈이므로 별도 설치 없이 바로 실행합니다.Bash
python -m unittest <테스트_파일.py>pytest: 서드파티 라이브러리이므로 설치 후 실행합니다.Bash
uv pip install pytest pytest
2. 터미널에서 VS Code 바로 실행하기
터미널에서 code . 명령어로 현재 폴더를 VS Code에서 여는 것은 작업 효율을 크게 높여줍니다.
설정 방법
VS Code에서 명령 팔레트 열기 (
Cmd+Shift+P또는Ctrl+Shift+P)shell command검색Shell Command: Install 'code' command in PATH선택
3. PATH 환경 변수 깊이 파헤치기
code 명령어는 어떻게 .zshrc 수정 없이 동작할까요? 그 비밀은 PATH와 심볼릭 링크에 있습니다.
code 명령어의 위치
code 명령어는 .zshrc에 등록된 alias가 아니라, PATH에 포함된 디렉터리(주로 /usr/local/bin)에 생성된 심볼릭 링크(Symbolic Link)입니다.
위치 확인
Bash
# 명령어의 전체 경로 확인 which code # 출력 예시: /usr/local/bin/code심볼릭 링크 정보 확인
Bash
# 해당 파일이 무엇을 가리키는지 확인 ls -l $(which code) # 출력 예시: /usr/local/bin/code -> /Applications/Visual Studio Code.app/...
PATH의 구성 원리: 우선순위의 비밀
PATH는 시스템 설정과 사용자 설정이 결합되어 만들어지며, 사용자 설정이 더 높은 우선순위를 가집니다.
시스템 기본
PATH로드: 셸이 시작되면/etc/paths등의 파일에서 시스템의 기본PATH를 가져옵니다. (예:/usr/bin,/bin)사용자
PATH적용: 그 후~/.zshrc파일을 읽어PATH를 수정합니다. 보통 아래와 같은 형식으로 기존PATH의 맨 앞에 새로운 경로를 추가합니다.Bash
# /new/path가 기존 $PATH보다 앞에 위치하게 되어 우선순위가 높아진다. export PATH="/new/path:$PATH"
가상 환경 활성화와 PATH
Python 가상 환경 활성화는 바로 이 PATH의 우선순위 원리를 이용합니다.
source .venv/bin/activate명령어는 현재 가상 환경의bin폴더를PATH변수의 가장 맨 앞에 추가하는 역할을 합니다.
이로 인해 터미널에 python을 입력하면, 시스템의 /usr/bin/python보다 가상 환경의 .venv/bin/python이 먼저 발견되어 실행됩니다.
4. 나만의 커스텀 명령어 만들기
VS Code가 아닌 다른 프로그램도 터미널 명령어로 실행하고 싶다면, code 명령어의 원리를 응용해 직접 만들 수 있습니다.
실행 파일 경로 확인: 앱의 실제 실행 파일 위치를 찾습니다.
(예: /Applications/MyEditor.app/Contents/MacOS/MyEditor)
/usr/local/bin에 셸 스크립트 생성:
Bash
# /usr/local/bin에 'myeditor'라는 이름의 파일 생성 sudo nano /usr/local/bin/myeditor # 파일 내용 작성 (macOS 기준) #!/bin/sh open -a "MyEditor" --args "$@"실행 권한 부여:
Bash
sudo chmod +x /usr/local/bin/myeditor
이제 터미널을 재시작하면 myeditor . 와 같은 명령어를 사용할 수 있습니다.