본문 바로가기
  • AI (Artificial Intelligence)
Skills/Unix, Linux

.bash_profile과 .bashrc의 차이점

by 로샤스 2015. 3. 5.

.bash_profile과 .bashrc의 차이점

25 Nov 2013

bash를 쓰다보면 환경변수를 지정하면 편할 때가 종종 있는데 .bash_profile에 써야할 지.bashrc 파일에 써야할 지 자주 헷갈립니다.. 저와 비슷한 경험을 하실 분들을 위해서 여기 간단히 정리해 둡니다. .bash_profile은 처음 로그인할 때 실행되고 그 이후에는 인터렉티브 bash를 실행하면 .bashrc가 실행됩니다.

근데 이 로그인이라는 표현도 헷갈립니다. 이는 예를 들어 보는 것이 편합니다.

  • console에 로그인 하거나
  • ssh를 통해서 로그인하거나
  • Mac OSX이나 Linux에서 터미널 프로그램을 실행하거나 탭을 늘이거나

이들 각각이 모두 로그인으로 간주 됩니다. 그래픽 세션 로그인과 좀 의미가 다릅니다.

그 이외의 경우란 아래와 같습니다. - screen이나 tmux 에서 새로운 윈도우를 실행

여기 Mac에서 각각을 확인하기 위해 실행해 본 내용입니다.

  1. .bash_profile에 echo "bash_profile".bashrc에 echo "bashrc" 라고 각각 마지막 줄에 추가해줍니다.

    • 터미널창이나 탭을 열어 봄

    결과: bash_profile 출력됨 - bash 실행 (인터렉트브)

    결과:bashrc 출력됨 - bash -c "pwd" 실행

    결과: bashrc 실행안됨

  2. .bashrc에만 /usr/local/bin/mysql을 PATH에 추가함

    • 터미널 창을 열고 which mysql

      결과: 못찾음

    • 이 상태에서 bash실행하고 그 안에서 which mysql

      결과: 찾음

    • 내부 bash에서 나와서 bash -c "which mysql"

      결과: 못찾음

    • 내부 bash에서 나오지 않고 bash -c "mysql"

      결과: 찾음

로그인 bash는 .bash_profile만 로드하기 때문에 .bashrc에 적혀 있는 내용도 실행하도록.bash_profile내에 아래와 같은 라인으로 .bashrc내용을 가져오는 것이 편합니다. 사실 많은 배포판에서도 기본 그렇게 하고 있지만 OSX 등 기본적으로 그렇게 되어있지 않는 OS나 배포판을 사용하고 있다면 추가해 주는 것도 좋은 방법입니다.

[[ -r ~/.bashrc ]] && . ~/.bashrc

참고: Stackoverflow difference btw profile and rc and environment











출처 : http://www.ryeonho.com/posts/bash_profile-bashrc-difference.html



감사합니다. 

문제가 되면 삭제 하겠습니다.

좋은 지식 더 널리 공유 하고자 하는것이니 양해 바랍니다.












댓글