profile bashrc 실행 순서

Jmnote (토론 | 기여)님의 2012년 3월 30일 (금) 17:44 판 (→‎호출 순서)

  • profile bashrc bash_profile 실행 순서
  • profile bashrc bash_profile 호출 순서

1 실행 순서

기본 설정에서 실행 순서는 다음과 같다.

  • 각 파일의 맨 아랫부분에 실행 코드를 추가할 때의 기준이다.
  • 특별히 코드를 변경하지 않았다면 이 순서대로 실행될 것이다.
  • 실행코드를 추가할 때 맨 아랫부분에 추가하는 것이 보통이므로 이 정도만 알아두어도 유용할 것 같다.
  1. /etc/profile.d/test.sh[1]
  2. /etc/profile
  3. /etc/bashrc
  4. ~/.bashrc
  5. ~/.bash_profile

2 호출 순서

기본 설정에서 호출 순서는 다음과 같다.

  • 각 파일의 맨 윗부분에 실행 코드를 추가할 때의 기준이다.
  • 위의 문단과 혼동이 있을 수도 있으므로 대충 보고 넘어가자.
  1. /etc/profile → /etc/profile.d/test.sh
  2. ~/.bash_profile → ~/.bashrc → /etc/bashrc

3 분석

~/.bash_profile에 다음과 같은 내용이 있다.

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

→ ~/.bashrc 가 있으면 그것을 실행시킨다.

~/.bashrc 에 다음과 같은 내용이 있다.

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

→ /etc/bashrc가 있으면 그것을 실행시킨다.

/etc/profile에는 다음과 같은 내용이 있다.

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "$PS1" ]; then
            . $i
        else
            . $i >/dev/null 2>&1
        fi
    fi
done

→ /etc/profile.d 폴더 내의 모든 sh 파일을 실행시킨다.

실행파일의 호출 순서를 정리하면 다음과 같다. (OS는 /etc/profile과 ~/.bash_profile 2개를 순서대로 호출할 뿐인데, 각 파일이 내부적으로 다른 파일을 호출하는 것이다.)

  • 리눅스 → /etc/profile → /etc/profile.d/test.sh
  • 리눅스 → ~/.bash_profile → ~/.bashrc → /etc/bashrc

이것을 각 파일의 마지막에 코드를 추가했을 때 기준으로 실행순서를 정리하면, 맨 위 문단에서 설명한 바와 같게 된다.

  • /etc/profile.d/test.sh → /etc/profile
  • /etc/bashrc → ~/.bashrc → ~/.bash_profile

4 주석

  1. 여기서는 test.sh라고 했지만 어떤 이름이든 상관없다. /etc/profile.d에 있는 모든 sh 파일이 여기에 해당된다.

5 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}