* login shell & non-login shell 이란

/etc/profile, ~/.bash_profile, ~/.bashrc, /etc/bashrc 파일들은 장치 관리 및 사용자 환경을 위한 설정 파일입니다.

위 파일들의 차이점을 알기 위해선 먼저 login shell과 non-login shell을 알아야 합니다.

 ·  login shell : 처음 리눅스를 부팅하고 터미널을 켰을 경우 특정 shell로 접속이 되면 login shell.

 ·  non-login shell : 터미널을 켰을 때 특정 shell로 들어가지 않고 직접 sh 등의 명령어로 특정 shell에 들어가야 할 경우 non-login shell.

=> 예를 들어 새로운 환경변수를 설정할 때 non-login shell 일 경우 .bashrc 파일을 이용해야 합니다.

 

* login shell (profile)

시스템에 로그인하면 login shell로 동작한다고 보면 됩니다. 기본 로그인 쉘인 bash는 login shell로 동작할 때 profile을 읽습니다.

/etc/profile은 /etc/profile.d 디렉토리 안에 존재하는 모든 쉘 스크립트를 실행시는 역할을 합니다.
/etc/profile.d 디렉토리에는 vim, qt, lang, colorls 등 다양한 설정이 sh 파일 형태로 존재하고 최초 로그인 시 /etc/profile을 통해 실행됩니다. (로그인 시 /etc/profile을 먼저 읽고 이후 홈디렉토리의 ~/.profile을 읽음)

 

· 실행 순서

   1. /etc/profile
   2. ~/.bash_profile    or    ~/.bash_login    or    ~/.profile
   3. ~/.bashrc
   4. /etc/bashrc

 

/etc/profile 과 .profile은 shell이 bash 쉘이 아니라도 로그인 시 적용되고, 

.bashrc와 .bash_login, .bash_profile은 bash 쉘로 로그인 되었을 경우만 적용이 됩니다.

리눅스의 기본 로그인 쉘은 bash 쉘로 bashrc는 bash 쉘에서 사용하는 run command 라는 의미를 가집니다. 
사용자가 임의로 로그인 쉘을 변경할 경우 변경한 쉘에 맞는 cshrc, tcshrc, kshrc 파일이 bashrc와 같은 역할을 합니다.

/etc/profile 과 .profile은 shell이 bash가 아니라도 로그인하면 로드되어 적용되고,

.bashrc 와 .bash_login, .bash_profile은 bash shell로 로그인 되었을 경우만 적용이 됩니다.

 

- /etc/profile

: 시스템 전역(모든 사용자)에 대한 환경설정 파일. 로그인시 설정 내용을 읽어들임. 시스템 전반적인 환경값들을 설정.

- ~/.bash_profile

: 개인 사용자에 대한 환경설정 파일. 로그인시 설정 내용을 읽어들임. 각 사용자 환경에 맞는 설정.

 

bashrc 파일을 수정해도 로그인 할 때 반영되는 이유는 /etc/profile이 /etc/bashrc 파일을 읽어오고

~/.profile이 ~/.bashrc 파일을 읽어오도록 구현되어 있기 때문입니다.

=> 환경 설정은 profile 파일에 alias 및 함수 설정은 bashrc 파일 저장하는 것을 권장하고 있습니다.

 

* interactive (rc file)

bash가 아닌 다른 shell에서 bash를 호출할 때 interactive로 동작합니다. 이 때 bash는 rc file을 읽습니다.

bashrc 파일은 bash가 수행될 때 실행되는 함수를 제어하는 지역적인 시스템 설정과 관련된 파일입니다. 

 

- /etc/bashrc

: 시스템 전역(모든 사용자)에 대한 환경설정 파일. 새로운 bash가 실행될 때 마다 내용을 읽어들임.

- ~/.bashrc

: 개인 사용자에 대한 환경설정 파일. bash가 실행될 때 마다 내용을 읽어들임.

 

/etc/profile은 부팅후에 적용되며

~/.bash_profile은 재로그인 하면 적용되나

source 명령어를 이용하여 바로 적용할 수 있습니다.