Programming/Linux & Unix

[Linux & Unix] .bashrc 와 .bash_profile 의 차이

UroA 2016. 12. 13. 15:40

.bashrc 와 .bash_profile 의 차이


 사용하는 노트북은 Mac이고, 회사에서 일할 때도 주로 원격서버에서 터미널을 자주 이용하다 보니 bash와 vi 설정에 대해 궁금하게 됐습니다.

처음 회사에 들어왔을때는 사수분께서 직접 .dotfile 을 주셔서 설정을 했었는데, 이번기회에 bash와 vi 설정에 대해 공부 하면서 저만의 .dotfile을 만들어보고자 합니다.


먼저 헷갈렸던 .bashrc 와 .bash_profile 의 차이에 대해서 정리하기전에 Login Shell 과 Non-Login Shell 의 차이에 대해서 알아보겠습니다.


Login Shell 과 Non-Login Shell

Login Shell

 로그인은 계정과 암호를 입력해서 Shell을 실행하는 것을 말합니다. 따라서 ssh로 접속하거나 로컬에서 GUI를 통해 Shell을 실행하는 것은 Login Shell 입니다.

'.profile', '.bash_profile' 이 두 파일은 Login할 때 로드되는 파일입니다. '.profile'은 꼭 bash가 아니더라도 로그인하면 로드되며, '.bash_profile'은 꼭 bash로 로그인 할 때만 실행됩니다.


Non Login Shell

 Non-Login Shell은 로그인 없이 실행하는 Shell을 말합니다. ssh로 접속하고 나서 다시 bash를 실행하는 경우나, GUI 세션에서 터미널을 띄우는 것도 여기 해당합니다. 'sudo bash'나  'su'같은 것도 해당합니다.


* 단, Mac OS X에서는 로그인 여부에 관계 없이 모든 터미널 창을 Login Shell로 실행합니다. (따라서 .bash_profile이 로드됩니다.)


.bashrc 와 .bash_profile(profile)

.bashrc

 이미 로그인 한 상태에서 새 터미널 창을 열 때마다 실행된다. (non-login shell에서 실행된다)


.bash_profile

 시스템에 로그인할 때마다 실행된다. (login shell 에서 실행된다.) 현재 nvm(Node Version Manager)을 사용중인데 이와 관련된 설정들이 여기에 들어가야 하는것 같다.


.profile

 로그인할 때 로드된다. PATH처럼 로그인할 때 로드해야 하는데 bash와 관계없는 것들을 여기에 넣는다.


* 만약 Mac에서 새 터미널 창을 열 때마다 .bashrc를 로드하고 싶다면 .bash_profile 에서 .bashrc를 로드하면 됩니다.



--참고--

http://keichee.tistory.com/14