bash_profile, bashrc 차이점

2025. 5. 14. 08:01·Linux
728x90

☑️ bash_profile, bashrc 설명

  • .bash_profile : "시스템에 처음 로그인할 때" 실행
    • SSH 로그인
    • 콘솔 로그인
    • GUI 로그인 화면에서 로그인
  • bashrc: "이미 로그인된 상태에서 새로운 셸을 시작할 때" 실행
    • 이미 로그인된 상태에서 터미널 애플리케이션 실행
    • 이미 로그인된 상태에서 bash 명령어 실행
    • 스크립트에서 새로운 셸 시작

☑️ 이해하기

위 내용으로는 이해하기 힘든 사람들도 있을 것이다.

그래서 내 친구에게 설명한 그대로 예시를 들어보겠다.

(1) .bashrc 에 넣어야 할 것을 .bash_profile에 넣은 경우

# ~/.bash_profile
export PATH=$PATH:/opt/special/bin
export JAVA_HOME=/usr/lib/jvm/java-11
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

# .bashrc 불러오기
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# 로그인시 1번만 실행할 명령어
echo "$(hostname)에 로그인했습니다. 현재 시간: $(date)"

# ~/.bashrc
alias ll='ls -la'
alias k='kubectl'
PS1='\u@\h:\w\$ '
$ ssh user@server
$ k get pods          # 정상 작동
$ bash                # 새로운 새션 시작
$ k get pods          # 오류: command not found: k

발생하는 문제

  • 새로운 터미널을 열었기 때문에 bash_profile 은 실행하지 않는다.
  • 로그아웃했다가 다시 로그인해야만 설정이 적용됨

(2) .bash_profile에 넣어야 할 것을 .bashrc 에 넣은 경우

# ~/.bashrc
export PATH=$PATH:/opt/special/bin:/opt/another/bin
echo "서버에 로그인했습니다! 현재 시간: $(date)"
$ ssh user@server
서버에 로그인했습니다! 현재 시간: 12:00:00
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/opt/special/bin:/opt/another/bin

$ bash  # 새 bash 세션
서버에 로그인했습니다! 현재 시간: 12:00:01
$ echo $PATH  # PATH가 중복됨
/usr/local/bin:/usr/bin:/bin:/opt/special/bin:/opt/another/bin:/opt/special/bin:/opt/another/bin

발생하는 문제

  • PATH 환경 변수가 터미널을 열 때마다 중복 추가되어 길어짐
  • 로그인 메시지가 새 터미널을 열 때마다 반복해서 표시됨
  • 시스템 자원 낭비 (불필요한 명령어 반복 실행)

☑️ 패턴

사용자 로그인 → .bash_profile 실행 (1번만)
    ↓
새 터미널 열기 → .bashrc 실행
    ↓
또 다른 터미널 열기 → .bashrc 실행 (터미널마다)
728x90

'Linux' 카테고리의 다른 글

HTTPS 인증 오류 트러블슈팅: 불특정 다수에게 발생한 SSL 인증서 문제 해결기  (0) 2025.10.14
[NGINX] 프록시 헤더 설정 (도메인에 포트가 빠지는 증상)  (1) 2025.08.28
All available gssapi mechanisms failed 에러가 나는 이유  (0) 2025.04.16
pam_tally2 실패 횟수 자동 증가 증상  (0) 2025.04.16
SFTP 특정 디렉토리만 접근 가능하도록 하는 방법 (sftp chroot)  (2) 2024.10.29
'Linux' 카테고리의 다른 글
  • HTTPS 인증 오류 트러블슈팅: 불특정 다수에게 발생한 SSL 인증서 문제 해결기
  • [NGINX] 프록시 헤더 설정 (도메인에 포트가 빠지는 증상)
  • All available gssapi mechanisms failed 에러가 나는 이유
  • pam_tally2 실패 횟수 자동 증가 증상
정주원
정주원
개인블로그
  • 정주원
    Joon.eng
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • Linux (43)
      • Windows (0)
      • Network (5)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Language (1)
      • Etc (5)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    bash_profile, bashrc 차이점
    상단으로

    티스토리툴바