본문 바로가기
운영체제(OS)/Linux

.bash_profile 과 .bashrc

by JLearn 2026. 3. 17.
반응형

리눅스(Bash) 환경에서 .bash_profile과 .bashrc는 설정이 적용되는 시점이 완전히 다릅니다. 이 차이를 이해하려면 Bash가 실행되는 두 가지 방식인 '로그인 쉘''대화형 비로그인 쉘'의 개념을 먼저 알아야 합니다.


1. 핵심 차이점

구분 .bash_profile .bashrc
실행 시점 로그인 시 딱 한 번 실행 새 터미널 창을 열 때마다 실행
쉘 종류 로그인 쉘 (Login Shell) 대화형 비로그인 쉘 (Interactive Non-login Shell)
주요 용도 환경 변수 설정 (PATH, LANG 등) 별칭(alias), 프롬프트(PS1), 함수 설정
범위 세션 전체에 영향을 미침 해당 터미널 세션에만 영향을 미침

2. 상세 동작원리

① .bash_profile (로그인 쉘용)

사용자가 시스템에 처음 로그인할 때 읽어들이는 설정 파일입니다.

  • 언제 실행되나?
    • SSH를 통해 원격 서버에 접속할 때.
    • 로컬 머신에서 GUI 로그인 후 터미널을 처음 실행할 때 (배포판에 따라 다름).
    • su - username 명령어로 사용자를 전환할 때.
  • 특징: 시스템 전체에 적용될 무거운 설정이나 환경 변수(export PATH=...)를 정의합니다. 한 번 로드되면 자식 프로세스(터미널 창 등)에 상속되므로 매번 실행될 필요가 없습니다.

② .bashrc (비로그인 쉘용)

이미 로그인된 상태에서 새로운 터미널 창(쉘)을 열 때마다 실행되는 설정 파일입니다.

  • 언제 실행되나?
    • 우분투에서 Ctrl + Alt + T로 터미널을 열 때.
    • 터미널 내에서 bash 명령어를 입력해 새 쉘을 띄울 때.
  • 특징: 터미널 사용 편의성을 위한 설정을 주로 담습니다. 예를 들어 ls를 입력했을 때 색깔이 나오게 하는 alias ls='ls --color=auto' 같은 설정이 여기 들어갑니다.

3. 두 파일을 구분해서 사용하는 이유

모든 설정을 .bashrc에 넣어도 동작은 하지만, 효율성상속 문제 때문에 구분합니다.

 

  1. 성능: 환경 변수(PATH 등)는 한 번만 설정하면 하위 프로세스에 자동으로 전달됩니다. 굳이 터미널을 열 때마다 똑같은 경로를 다시 계산하고 추가할 필요가 없습니다.
  2. 논리적 구분: 로그인 시에만 필요한 작업(예: 시스템 공지 출력, 특정 서비스 시작 체크)과 터미널 사용 환경 설정(예: 명령어 줄이기)을 분리하여 관리하기 위함입니다.

4. 우분투(Ubuntu)에서의 실제 동작

Ubuntu 24.04를 포함한 대부분의 데비안 계열에서는 조금 독특한 방식을 사용합니다.

  • 우분투는 기본적으로 .bash_profile 대신 .profile을 사용합니다.
  • 로그인 시 .profile이 실행되는데, 이 파일 내부를 열어보면 보통 다음과 같은 코드가 들어있습니다.
# ~/.bashrc가 존재하면 실행하라
if [ -n "$BASH_VERSION" ]; then
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi
  • 결과적으로 우분투에서는 로그인할 때 .profile이 실행되면서 자동으로 .bashrc까지 함께 불러오게 됩니다. 이 구조 덕분에 사용자는 어떤 파일에 설정을 넣어도 터미널에서 즉시 사용할 수 있는 것처럼 느껴집니다.

5. 결론

  • export PATH=... (경로 추가): .profile (또는 .bash_profile)에 적는 것이 정석입니다.
  • alias ll='ls -al' (별칭 설정): .bashrc에 적어야 합니다.
반응형

'운영체제(OS) > Linux' 카테고리의 다른 글

우분투 명령어  (0) 2026.03.24
VI 단축키  (0) 2026.03.24
.bash_profile 과 .profile  (0) 2026.03.17
우분투 서버 키보드 레이아웃 변경  (0) 2026.03.11
2. 우분투 22.04 LTS 설치  (0) 2023.02.27

댓글