Skip to content

refactor(zsh): PATH 설정을 한 블록으로 모으고 죽은 경로 제거 - #8

Draft
dorage wants to merge 2 commits into
mainfrom
refactor/zshrc-path-cleanup
Draft

refactor(zsh): PATH 설정을 한 블록으로 모으고 죽은 경로 제거#8
dorage wants to merge 2 commits into
mainfrom
refactor/zshrc-path-cleanup

Conversation

@dorage

@dorage dorage commented Sep 6, 2026

Copy link
Copy Markdown
Owner

무엇을 바꿨나

configs/zsh/.zshrc 곳곳에 흩어져 있던 export PATH 일곱 줄을 파일 상단 한 블록으로 모았다.

정리 전 새 셸의 PATH 는 항목이 40개였고, 그중 이런 것들이 섞여 있었다.

  • 홈 디렉터리 자체(/Users/kanghyunlee)가 네 번
    • export PATH=$HOME:/usr/local/bin:$PATH 처럼 $HOME: 이 붙은 오타 때문이다.
    • 홈에 실행 권한 붙은 파일이 있으면 그게 명령으로 잡힌다.
  • 없는 디렉터리 ~/.dorage-scripts
    • 디렉터리도 없고, 그걸 채우던 perl 스크립트도 이미 지워졌다.
  • 하드코딩된 홈 경로 /Users/kanghyunlee/.cargo/bin
    • 사용자 이름이 다른 머신에서는 그대로 깨진다. 재현 가능한 환경이라는 이 리포의 목적에 어긋난다.
  • /usr/local/bin 중복
    • /etc/paths 에 이미 있어서 다시 넣을 이유가 없다.

정리 뒤에는 19개가 된다.

어떻게

  • typeset -U path PATH 로 중복 항목을 셸이 자동으로 걷어내게 했다. 앞으로 같은 경로를 두 번 적어도 PATH 가 부풀지 않는다.
  • 경로마다 (N-/) 글롭 한정자를 붙여, 실제로 있는 디렉터리만 들어가게 했다. 설치하지 않은 도구의 경로는 조용히 빠진다.
  • BUN_INSTALL 환경변수는 bun 설치 스크립트가 참조하므로 남기고, bin 추가만 위 블록으로 옮겼다.

검증

  • zsh -n 문법 검사 통과
  • 부모 PATH 를 상속하지 않은 깨끗한 로그인 셸(env -i)에서 PATH 항목 40개 → 19개
  • 명령 17개(java, javac, bun, cargo, rustc, uv, claude, fzf, eza, bat, zoxide, nvim, gh, git, brew, node, npm)의 해석 결과가 정리 전후로 모두 동일함을 확인
    • openjdk@21 은 keg-only 라 /opt/homebrew/bin 에 링크가 없다. 그래서 우선순위가 homebrew 뒤로 밀려도 java 는 그대로 openjdk 를 가리킨다.
  • ~/.zshrc 에도 반영했다. 되돌릴 때는 ~/.zshrc.bak-path-cleanup 을 덮어쓰면 된다.

후속 작업

scripts/sync-claude.sh 의 홈 경로 주입을 공용 스크립트로 빼는 작업은 이 PR 에 넣지 않았다. 리포에 {{HOME}} 로 적고 파일을 옮길 때 실제 홈 경로로 바꾸는 방향으로 별도 진행한다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Kii6CbgMDZARxMay7TW8hc

dorage and others added 2 commits September 7, 2026 00:19
흩어져 있던 export PATH 일곱 줄을 파일 상단 한 블록으로 모았다.
정리 전 새 셸의 PATH 는 항목이 40개였고 그중 홈 디렉터리 자체가 네 번,
없는 디렉터리가 한 번 들어 있었다. 정리 뒤에는 19개가 된다.

- `$HOME:` 오타로 홈 디렉터리 자체가 PATH 에 들어가던 네 줄을 고쳤다.
- `/Users/kanghyunlee/.cargo/bin` 의 하드코딩된 홈 경로를 `$HOME` 으로 바꿨다.
  사용자 이름이 다른 머신에서 그대로 깨지던 줄이다.
- `/usr/local/bin` 은 /etc/paths 에 이미 있어 다시 넣지 않는다.
- `~/.dorage-scripts` 는 디렉터리도, 그걸 채우던 스크립트도 없어서 지웠다.
- `typeset -U path PATH` 로 중복을 자동으로 걷어내고,
  경로마다 `(N-/)` 를 붙여 없는 디렉터리는 애초에 들어가지 않게 했다.
- BUN_INSTALL 은 bun 설치 스크립트가 참조하므로 남기고, bin 추가만 위로 옮겼다.

명령 17개(java, bun, cargo, uv, claude, brew 계열 등)의 해석 결과가
정리 전후로 같은 것을 확인했다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kii6CbgMDZARxMay7TW8hc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant