[ Login Shell vs Non-login Shell ]

Login Shell : 계정/암호를 입력하여 Shell 실행하는 것. ex) ssh 로그인 / GUI에서 로그인

Non-login Shell : 로그인 없이 실행되는 Shell. ex) ssh 접속 후 bash 를 다시 실행하는 경우, GUI에서 터미널을 띄운 경우 sudo su 로 계정 변경하는 경우

 

[ 파일 로드 순서 ]

1. /etc/profile

: /etc/profile.d 디렉토리 안의 모든 쉘 스크립트 실행시킴. /etc/profile.d 엔 vim, qt, lang 등 다양한 설정이 sh 파일 형태로 존재. 쉘에 로그인하면 일단 이 sh 파일을 모두 실행시키는 것.

2. ~/.bash_profile or ~/.profile

: 계정 디렉토리에 있는 .bash_profile or .profile 로드. 이 파일들은 계정에 종속적이기 때문에 계정 디렉토리에 존재하므로 ~/.bash_profile or ~/.profile 파일을 로드하게 되는 것. PATH 같은 환경변수를 설정할 때 이 파일을 수정하는 이유가 여기에 있다.

3. ~/.bashrc

: 계정 디렉토리에 있는 .bashrc 파일 로드. 이 파일은 로그인과 상관없이 bash 콘솔을 새롭게 열 때 실행됨. 파일 안에는 아래와 같은 구문이 있는데, /etc/bashrc 파일을 실행하라는 뜻.

if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

4. /etc/bashrc

마지막으로 /etc/bashrc 파일 실행. 이 파일도 /etc/profile 과 마찬가지로 계정과 상관없이 전역적으로 영향을 미침.

 

[ /etc/profile , /etc/bashrc ]

이 파일들은 계정과 상관없이 전역적 설정

 

[ ~/.profile, ~/.bashrc ]

계정 디렉터리로 가면 .bashrc와 .bash_profile or .profile이라는 2개이 파일이 있다.

.bash_profile이란 bash로 로그인 할 때만 로드된다.

반면 .profile은 bash와 상관없이 로그인 하면 로드된다.

두 개 중 하나만 로드되며 bash로 로그인하면 .bash_profile만, bash 외 쉘로 로그인하면 .profile만 로드된다.

이 파일들은 공통적으로 환경변수를 세팅할 때 사용하고, 차이점은 실행되는 시점이 다르다는 것이다

 

1) .profile : 로그인 되는 시점에 실행 (Login Shell). bash와 상관 없는 것들을 넣는다.
2) .bash_profile : Bash로 로그인 되는 시점에 실행 (Login Shell).
3) .bashrc : 새로운 콘솔을 열 때 실행 (Non-login Shell). 로그인 없이 Bash가 실행될 때 로드된다. bash 쉘이 아닌 경우 각 쉘에 맞는 cshrc, tcshrc, kshrc 파일 등이 동일한 역할을 한다.

 

 

[ 환경변수 설정 ]

전역 파일 설정 :

환경설정은 /etc/profile에, 기타 함수나 alias 설정은 /etc/bashrc에..

 

/etc/profile : 

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

/etc/bashrc :

# System wide functions and aliases
# Environment stuff goes in /etc/profile

 

[ 사용자 계정 파일 설정 ]

사용자 디렉터리에 있는 .bash_profile 또는 .profile  .bashrc 가 위의 전역 파일들에 대응된다고 볼 수 있다. 다만 로드 순서는 전역 파일이 먼저고 사용자 파일이 그 다음이다. 두 파일에서 중복되지 않는 내용들은 둘 다 적용된다고 볼 수 있다. 하지만 만약 내용이 중복된다면 사용자 계정 파일의 내용이 우선된다.

 

가급적 사용자 계정 디렉터리에 있는 환경설정 파일을 수정하고, 전역 설정을 변경해야 하는 경우에도 직접 전역 파일을 건드리지 말고 사용자 계정의 환경설정 파일 내에서 연속성을 유지할 수 있도록 수정해야 한다.

ex)  PATH를 수정해야 하는 상황에 놓였을 때, /etc/profile 를 직접 수정하는 것이 아니라 ~/.profile을 아래와 같이 전역 설정을 기반으로 연속적으로 수정한다.

/etc/profile

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

~/.profile

PATH="$PATH:/usr/home/test"

 

 

https://projooni.tistory.com/entry/bashrc-%EC%99%80-profile-%EC%B0%A8%EC%9D%B4%EC%99%80-%EC%9E%91%EB%8F%99%EC%9B%90%EB%A6%AC

 

반응형

+ Recent posts