공든탑앱 열기

셸 환경 설정 파일

리눅스마스터 2급 · Shell · 약 10분

쉽게 말하면

명령 창(셸)을 열 때마다 미리 읽어서 준비하는 설정 파일들이 있어요. 모든 사람에게 적용할 파일과 나에게만 적용할 파일이 있고, 로그인할 때와 창만 새로 열 때 읽는 파일이 달라요.

시험용 정의

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(비로그인)의 차이이기도 하다.

시험에 이렇게 나와요

확인 문제

Q1. 모든 사용자가 로그인할 때 적용되는 환경 변수를 설정하려면 어느 파일에 넣어야 할까?

  1. /etc/profile
  2. ~/.bashrc
  3. ~/.bash_history
  4. ~/.bash_logout
정답 보기

1번 /etc/profile

/etc/에 있는 파일은 시스템 전체(모든 사용자), ~/(홈)에 있는 점 파일은 그 사용자에게만 적용된다. /etc/profile은 로그인할 때 모든 사용자에게 적용되는 환경 설정 파일이다.

Q2. 사용자 kim이 자기 PATH에 디렉터리를 추가해 로그인할 때마다 적용되게 하려면 보통 어느 파일에 적는가?

  1. /etc/shells
  2. ~/.bash_history
  3. ~/.bash_profile
  4. /etc/profile
정답 보기

3번 ~/.bash_profile

개인 로그인 환경 = ~/.bash_profile. /etc/profile은 모든 사용자에게 적용된다.

Q3. 로그아웃할 때 실행되는 사용자 설정 파일은?

  1. ~/.bash_profile
  2. ~/.bashrc
  3. ~/.bash_logout
  4. /etc/profile
정답 보기

3번 ~/.bash_logout

~/.bash_logout이다. ~/.bash_profile은 로그인할 때, ~/.bashrc는 새 셸을 열 때 읽는다.

Q4. 수정한 ~/.bashrc를 다시 로그인하지 않고 현재 셸에 적용하는 명령은?

  1. source ~/.bashrc
  2. export ~/.bashrc
  3. exec ~/.bashrc
  4. reload ~/.bashrc
정답 보기

1번 source ~/.bashrc

source ~/.bashrc다(점 . 으로도 쓴다). 지금 셸에서 그 파일을 읽어 바로 적용한다.

Q5. 모든 사용자에게 적용되는 alias나 함수를 정의하기에 알맞은 파일은?

  1. /etc/bashrc
  2. ~/.bash_logout
  3. ~/.bashrc
  4. /etc/shells
정답 보기

1번 /etc/bashrc

/etc/bashrc (시스템 전체, 대화형 셸).

헷갈리기 쉬운 O·X

~/.bashrc를 수정하면 다른 모든 사용자에게도 적용된다.

정답 보기

X 홈의 파일은 그 사용자에게만.

/etc/profile은 로그인 셸이 시작될 때 읽힌다.

정답 보기

O 맞는 설명이다.

~/.bash_history는 bash의 환경 설정 파일이다.

정답 보기

X 명령 기록을 저장하는 파일.

함께 보면 좋은 개념