반응형
profile bashrc bash profile 실행 순서
- bash 쉘 초기화 파일 실행 순서
- profile bashrc bash_profile 실행 순서
- profile bashrc bash_profile 호출 순서
1 실행순서 (간단히 정리)[편집]
기본 설정에서 실행 순서는 다음과 같다.
- 각 파일의 맨 아랫부분에 실행 코드를 추가할 때의 기준이다.
- 특별히 코드를 변경하지 않았다면 이 순서대로 실행될 것이다.
- 실행코드를 하단에 추가하는 것이 보통이므로 이 정도만 알아두면 OK.
- /etc/profile.d/test.sh[1]
- /etc/profile
- /etc/bashrc
- ~/.bashrc
- ~/.bash_profile
2 호출 순서[편집]
기본 설정에서 호출 순서는 다음과 같다.
- 각 파일의 맨 윗부분에 실행 코드를 추가할 때의 기준이다.
- 위의 문단과 혼동이 있을 수도 있으므로 대충 보고 넘어가자.
- /etc/profile → /etc/profile.d/test.sh
- ~/.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 실행순서 (정확히)[편집]
각 파일에 아래와 같은 형식으로 명령어를 추가하여 추적해보았다.
NOW=`date +%Y-%m-%d\ %H:%M:%S`
echo "$NOW [/etc/profile.d/a.sh]" >> /root/run_order.txt
그 로그는 다음과 같다.
[root@zetawiki ~]# cat run_order.txt
2013-08-03 07:47:28 [START OF /etc/profile]
2013-08-03 07:47:28 [/etc/profile.d/a.sh]
2013-08-03 07:47:28 [/etc/profile.d/b.sh]
2013-08-03 07:47:28 [END OF /etc/profile]
2013-08-03 07:47:28 [START OF ~/.bash_profile]
2013-08-03 07:47:28 [START OF ~/.bashrc]
2013-08-03 07:47:28 [START OF /etc/bashrc]
2013-08-03 07:47:28 [END OF /etc/bashrc]
2013-08-03 07:47:28 [END OF ~/.bashrc]
2013-08-03 07:47:28 [END OF ~/.bash_profile]
5 같이 보기[편집]
6 주석[편집]
7 참고[편집]
반응형
'OS > Linux' 카테고리의 다른 글
CentOS 7 기본설정 (0) | 2018.02.23 |
---|---|
CentOS에 Maven 설치하기 (0) | 2018.02.23 |
[CentOS 7] Git – 설치 및 사용 (0) | 2018.02.22 |
CentOS 7에 MySQL 설치하기 (0) | 2018.02.22 |
CENTOS 7 NTFS 디스크 마운트 (0) | 2018.02.22 |