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 |