Hou bio photo

Hou

웹/자바 개발자

맥을 쓰면서 경로를 설정해줘야 할 경우가 생길 때 터미널에서 bash_profile, bashrc, zshrc등 어떤 파일을 바꿔야 할지 헷갈릴 경우가 생깁니다. zsh를 쓴다면 zshrc만 바꾸면 되지만 여러 shell을 쓰면서 모두 깔려 있거나 bash를 쓴다면 어떤 파일을 바꿔야할지 살펴보려 합니다.

bash_profile과 bashrc의 차이점

bash 홈페이지에는 bash_profile은 login shell이 실행 될 떄, bash_profile은 interactive non-login shell의 실행을 위한 것이라고 합니다. login_shell은 bash를 처음 킬 때, 콘솔에 로그인하거나, ssh를 통해 로그인하는 경우, the initial command prompt 실행되기 전입니다. interactive non-login shell은 로그인 후에 새로운 터미널 창을 열거나 window command prompt가 실행되기 전이라고 하네요.

왜 2가지로 구분을 하는 것일까요?

bash_profile은 load average, current users와 같이 로그인과 관련된 정보들을 얻을 때 필요하고 bashrc는 새로운 터미널을 열 때마다 정보를 받고 싶을 때 필요하다고 합니다.
위와 같이 매번 나누어서 설정한다면 상당히 귀찮은 일이 아닐 수 없습니다. 로그인 할 때는 지원을 안해준다면 경우에 따라서 bashrc에 있는 내용이 실행이 안되기도 합니다. 그래서 아래와 같이 bash_profile에서 bashrc의 내용들을 불러오도록 하도록 하는게 좋은 방법입니다.

[[ -r ~/.bashrc ]] && . ~/.bashrc

zshrc는 ?

zsh는 bash와 같은 shell의 한 종류입니다. zshrc의 경우는 bashrc와는 조금 다릅니다. zshrc는 login이든 non-login이든 상관없이 항상 실행됩니다. 그래서 zshrc를 bashrc와 bash_profile처럼 구별해서 쓸 필요는 없습니다. 물론 zsh 에도 login에서만 동작하는 zprofile이 있긴 합니다.


아래 사이트에 bash와 zsh의 파일들이 어떨 때 동작하는지와 동작 순서에 대하여 볼 수 있습니다. https://shreevatsa.wordpress.com/2008/03/30/zshbash-startup-files-loading-order-bashrc-zshrc-etc/


comments powered by Disqus