술(述)/풀이

bash 설정 파일

쪼랩전사 2021. 12. 5. 22:37
728x90

bash는 다양한 설정 파일을 가지고 있습니다.

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc

이 포스팅에서는 이 설정 파일들이 무엇인지, 언제 실행되는지를 알아보겠습니다.

 

그 전에 먼저 Bash에서 제공하는 모드들에 대해 알아보겠습니다.

interactive 모드

interactive 모드는 사람의 개입이 필요할 때 사용하는 모드입니다.
이는 다시 두 가지 모드를 제공합니다.

login 모드

CLI에서 로그인할 때와 SSH를 통해 로그인할 때 사용하는 모드입니다.

이 모드는 아래의 설정 파일들을 실행합니다.

  • /etc/profile
  • ~/.bash_profile

보통 ~/.bash_profile에는 환경 변수를 지정합니다.

  • PATH
  • PS1
  • 등등

non-login 모드

이미 로그인한 상태에서 다시 bash에 접속할 때 사용하는 모드입니다.

  • Desktop environment로 이미 로그인한 상태에서, 터미널을 실행할 때
  • 이미 로그인한 상태에서, 다시 bash에 접속할 때

이 모드는 아래의 설정 파일을 실행합니다.

  • ~/.bashrc

환경 변수는 상속받습니다.

 

보통 ~/.bashrc 에는 해당 bash를 위한 명령어들을 지정합니다.

  • alias
  • 등등

non-interactive 모드

사람의 개입이 필요 없으며, 단순히 명령을 수행하기 위해 fork 할 때 사용하는 모드입니다.

이 모드는 설정 파일을 실행하지 않습니다.
환경 변수는 상속받습니다.

함정

분명히 위에만 보면, login 모드와 non-login 모드가 분명 다른 설정 파일을 실행시킵니다.

하지만...

  • ~/.bash_profile 내용
[[ -f ~/.bashrc ]] && . ~/.bashrc

위 코드를 해석하자면, ~/.bashrc 파일이 존재하면, ~/.bashrc를 실행시키는 것입니다.
즉, login 모드와 non-login 모드가 같아져 버린다.

마치며...

일반적으로, ~/.bashrc는 항상 실행된다. 그래서, 그냥 ~/.bashrc 에 모든 설정을 때려 박아도 된다.

'술(述) > 풀이' 카테고리의 다른 글

SRP  (0) 2021.12.13
LSP  (0) 2021.12.10
code bloat(코드 비대화)  (0) 2021.11.24
headless server(헤드리스 서버)  (0) 2021.11.22
횡단 관심사(Cross-cutting concerns)  (0) 2021.11.18