셸 환경 설정 파일
쉽게 말하면
명령 창(셸)을 열 때마다 미리 읽어서 준비하는 설정 파일들이 있어요. 모든 사람에게 적용할 파일과 나에게만 적용할 파일이 있고, 로그인할 때와 창만 새로 열 때 읽는 파일이 달라요.
시험용 정의
bash는 시작할 때 정해진 순서로 환경 설정 파일을 읽어 변수·alias·함수를 준비한다. 시스템 전체용(/etc/profile, /etc/bashrc)과 사용자용(~/.bash_profile, ~/.bashrc)이 있고, 로그인 셸이냐 아니냐에 따라 읽는 파일이 다르다.
비유로 이해하기
출근(로그인)할 때는 회사 규정(/etc/profile) → 내 업무 수첩(~/.bash_profile)을 챙기고, 회의실에 잠깐 들어갈 때(새 터미널 창)는 개인 메모(~/.bashrc)만 본다.
자세히
파일과 역할
| 파일 | 적용 | 시점 |
|---|---|---|
| /etc/profile | 모든 사용자 | 로그인 셸 시작 시 (환경 변수, PATH, umask) |
| /etc/profile.d/*.sh | 모든 사용자 | /etc/profile이 불러 옴 |
| /etc/bashrc (Debian: /etc/bash.bashrc) | 모든 사용자 | 대화형 셸마다 (alias, 함수, 프롬프트) |
| ~/.bash_profile (또는 ~/.bash_login, ~/.profile) | 해당 사용자 | 로그인 셸 시작 시, 보통 ~/.bashrc를 불러 옴 |
| ~/.bashrc | 해당 사용자 | 대화형 비로그인 셸(새 터미널, bash 실행)마다 |
| ~/.bash_logout | 해당 사용자 | 로그인 셸 종료 시 |
| ~/.bash_history | 해당 사용자 | 명령 히스토리 저장 (설정 파일 아님) |
읽는 순서 (RHEL 계열 로그인 셸)
/etc/profile → ~/.bash_profile → ~/.bashrc → /etc/bashrc. ~/.bash_profile 안의 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi가 ~/.bashrc를, ~/.bashrc가 다시 /etc/bashrc를 불러 오기 때문이다. 로그인 셸에서 ~/.bash_profile, ~/.bash_login, ~/.profile 중 먼저 발견한 하나만 읽는다.
바로 적용하기
설정 파일을 고친 뒤 다시 로그인하지 않고 적용하려면 source ~/.bashrc 또는 . ~/.bashrc. 로그인 셸 여부는 su -(로그인 셸)와 su(비로그인)의 차이이기도 하다.
시험에 이렇게 나와요
- 모든 사용자의 환경 변수·시작 프로그램 →
/etc/profile - 모든 사용자에게 적용할 alias·함수 →
/etc/bashrc - 개인 alias·함수 →
~/.bashrc, 개인 환경 변수·PATH →~/.bash_profile - 명령 기록 파일
~/.bash_history는 설정 파일이 아니다
확인 문제
Q1. 모든 사용자가 로그인할 때 적용되는 환경 변수를 설정하려면 어느 파일에 넣어야 할까?
- /etc/profile
- ~/.bashrc
- ~/.bash_history
- ~/.bash_logout
정답 보기
1번 /etc/profile
/etc/에 있는 파일은 시스템 전체(모든 사용자), ~/(홈)에 있는 점 파일은 그 사용자에게만 적용된다. /etc/profile은 로그인할 때 모든 사용자에게 적용되는 환경 설정 파일이다.
Q2. 사용자 kim이 자기 PATH에 디렉터리를 추가해 로그인할 때마다 적용되게 하려면 보통 어느 파일에 적는가?
- /etc/shells
- ~/.bash_history
- ~/.bash_profile
- /etc/profile
정답 보기
3번 ~/.bash_profile
개인 로그인 환경 = ~/.bash_profile. /etc/profile은 모든 사용자에게 적용된다.
Q3. 로그아웃할 때 실행되는 사용자 설정 파일은?
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_logout
- /etc/profile
정답 보기
3번 ~/.bash_logout
~/.bash_logout이다. ~/.bash_profile은 로그인할 때, ~/.bashrc는 새 셸을 열 때 읽는다.
Q4. 수정한 ~/.bashrc를 다시 로그인하지 않고 현재 셸에 적용하는 명령은?
- source ~/.bashrc
- export ~/.bashrc
- exec ~/.bashrc
- reload ~/.bashrc
정답 보기
1번 source ~/.bashrc
source ~/.bashrc다(점 . 으로도 쓴다). 지금 셸에서 그 파일을 읽어 바로 적용한다.
Q5. 모든 사용자에게 적용되는 alias나 함수를 정의하기에 알맞은 파일은?
- /etc/bashrc
- ~/.bash_logout
- ~/.bashrc
- /etc/shells
정답 보기
1번 /etc/bashrc
/etc/bashrc (시스템 전체, 대화형 셸).
헷갈리기 쉬운 O·X
~/.bashrc를 수정하면 다른 모든 사용자에게도 적용된다.
정답 보기
X 홈의 파일은 그 사용자에게만.
/etc/profile은 로그인 셸이 시작될 때 읽힌다.
정답 보기
O 맞는 설명이다.
~/.bash_history는 bash의 환경 설정 파일이다.
정답 보기
X 명령 기록을 저장하는 파일.