C.W.K.
Stream
Lesson 02 of 10 · published

Shell 설정 파일

~13 min · zshrc, zprofile, zshenv, bashrc

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

왜 이렇게 많아?

zsh 는 시작 시 최대 4 개 설정 파일을 읽어. 각자 용도 다름. 잘못된 파일에 쓰는 게 'env 가 안 잡혀' 최다 원인.

zsh 의 네 파일

  • ~/.zshenv모든 zsh invocation, 비인터랙티브 스크립트 포함. 신중하게.
  • ~/.zprofile — login shell 만 (세션 첫 shell). $PATH 는 여기. Homebrew shellenv 도 여기.
  • ~/.zshrc — 인터랙티브. alias / prompt / plugin / completion. 대부분 설정은 여기.
  • ~/.zlogin — login, .zshrc 다음. 거의 안 씀.

bash 대응

  • ~/.bash_profile — login.
  • ~/.bashrc — 인터랙티브 non-login.
  • 옛 hack: 둘 사이를 source 해서 .bashrc 한 군데만 수정.

Login vs 인터랙티브 (미리보기)

Login shell = 세션 첫 shell (Terminal 열기, ssh, su -). 인터랙티브 = 프롬프트에 타이핑 가능. macOS Terminal 세션은 보통 둘 다. ssh 도. 서브셸 (zsh 안에서 bash) 은 인터랙티브지만 login 아님. 다음 레슨 참조.

뭐를 어디에

  • PATH 와 locale → .zprofile (launchd 비인터랙티브 스크립트도 인식).
  • alias / function / prompt → .zshrc.
  • 모든 스크립트가 봐야 하는 변수 → .zshenv (드묾).

편집 후 reload

source ~/.zshrc 또는 exec zsh 가 reload. 후자가 더 깔끔 — 현재 shell 을 새 거로 교체, 터미널 창은 유지.

Code

로드 순서 확인·bash
# Add a print to each file so you can see when each runs
echo 'echo ".zshenv loaded"'   >> ~/.zshenv
echo 'echo ".zprofile loaded"' >> ~/.zprofile
echo 'echo ".zshrc loaded"'    >> ~/.zshrc
# Open a new terminal — note the order
# Then remove these lines once you've seen them
터미널 안 닫고 reload·bash
exec zsh           # cleanest
source ~/.zshrc    # also fine for interactive only
# After editing PATH / .zprofile, prefer exec zsh

External links

Exercise

.zshenv, .zprofile, .zshrc 에 각각 echo print 추가. 새 Terminal 창 열기 — print 순서 확인. 이어서 bash -c 'echo from-bash; ssh-keygen --help' 으로 비로그인 shell 의 파일 로드 여부 확인. 끝나면 print 제거.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.