etc/profile, .profile, /etc/bashrc .bashrc

2018.04.09 07:00





etc/profile과 .profile의 차이



유닉스 시스템을 운영하는 경우 환경 설정 등을 위해서 /etc/profile이나 .profile을 편집해야 하는 경우가 있다. 


근데 어떤 책은 .profile에 추가하라고 나오고 어떤 블로그는 /etc/profile에 추가하라고 나오기도 한다. 이 둘의 차이는 뭘까???




거기다 경우에 따라서는 .bash_profile, .bashrc, /etc/bashrc 등등 비슷한거 같은데 뭐가 다른지 모르는게 여럿 나오기도 한다.  



이 파일들의 용도에 대해서 정리해본다. 




/etc/profile과 .profile의 차이점 




profile은 유닉스에서 로그인을 위한 환경설정을 저장한다. 

(리눅스는 /etc/profile은 있지만 .profile은 없는 경우도 있다)



/etc/profile은 모든 계정에 공통적으로 적용되고,

.profile은 해당하는 로그인 계정에서 사용하는 환경설정을 저장한다. 

(.profile 파일은 각 계정의 홈 디렉토리 아래에 존재한다)



그러니까 root로 로그인을 하면 먼저 /etc/profile을 읽어들이고

루트의 홈 디렉토리 아래있는 루트의 .profile을 읽어들인다. 


root가 아닌 scott 계정으로 로그인 한다면 /etc/profile을 읽어들이고

scott 계정의 홈 디렉토리에 있는 .profile을 읽어들인다. 




/etc/profile 파일 안을 cat 명령어나 vi 명령어로 들여다보면 중간에 아래와 같은 코드가 나온다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i in /etc/profile.d/*.sh ; do
 
    if [ -"$i" ]; then
 
        if [ "${-#*i}" != "$-" ]; then
 
            . "$i"
 
        else
 
            . "$i" >/dev/null 2>&1
 
        fi
 
    fi
cs




/etc/profile.d 디렉토리 안에 있는 모든 쉘스크립트(*.sh)를 실행시키는 명령어 코드이다.  


/etc/profile.d 디렉토리 안에는 kde, qt, vim, cvs, colorls 등에 관한 각종 설정이 sh파일 형태로 들어있고 이 스크립트들이 최초 로그인 때 /etc/profile을 통해 실행된다. 






/etc/bashrc와 .bashrc



위에서 설명한 /etc/profile과 .profile의 차이를 기반으로 이제 /etc/bashrc와 .bashrc의 관계도 미루어 짐작할 수 있다. 


/etc/bashrc는 모든 계정이 사용하는 설정들이 들어가 있고

특정 계정만 사용하는 설정은 해당 계정의 홈 디렉토리의 .bashrc 파일에 기록한다. 



참고로 리눅스(CentOS)에서 .bashrc 파일을 보면 중간에 아래와 같은 코드로 /etc/bashrc 파일을 호출한다. 



1
2
3
4
5
6
7
# Source global definitions
 
if [ -/etc/bashrc ]; then
 
    . /etc/bashrc
 
fi
cs



그러니까 bash를 쉘로 지정하면 /etc/profile → .profile → .bashrc → /etc/bashrc 순으로 호출되는 셈이다. 







그럼 어떤 내용을 profile에 저장하고 어떤 내용을 bashrc에 저장할까??


각 파일의 내용을 보면 앞 부분에 나오는 문장이 도움이 될 수 있을듯하다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@centos6 ~]#cat /etc/profile
 
# /etc/profile
 
 
 
# System wide environment and startup programs, for login setup
 
# Functions and aliases go in /etc/bashrc
 
...
 
...
 
 
 
 
 
 
 
[root@centos6 ~]#cat /etc/bashrc
 
# /etc/bashrc
 
 
 
# System wide functions and aliases
 
# Environment stuff goes in /etc/profile
 
...
 
...
cs





그러니까 환경설정은 profile에 다른 함수나 alias 설정은 bashrc에 저장하도록 권장한다. 




여기서 덧붙이면 bashrc는 bash쉘에서 사용하는 run command라는 의미이니 bash가 아닌 다른 쉘을 사용하는 경우 그 쉘에 맞는 cshrc, tcshrc, kshrc 파일이 bashrc 파일과 같은 역할을 한다. 


즉 콘쉘을 로그인 쉘로 사용한다면 /etc/kshrc 파일과 .kshrc 파일을 사용한다는 뜻이다. 

또루아빠 Linux, Unix , , , , , , , ,