
Shell initialization file들은 리눅스와 맥(macOS)에서 쉘(Shell) 설정 파일들을 가리킴.
- 주로 dot(닷)
.으로 시작하기 때문에 dotfiles라고도 불림.- Linux나 macOS에서 숨김파일은 dot으로 시작하는 이름을 가짐.
- startup file 또는 profile file이라고도 불림 (PowerShell에서 profile이라는 용어가 많이 사용됨).
여러 개가 존재하고, 로딩 순서와 역할이 약간의 차이가 있어서 정리해 봄.
Shell이 어떤 모드로 실행되었느냐의 차이점도 있으니 주의할 것.
아는 게 Bash와 Zsh 두 가지 뿐이라 이들을 나누어 정리함:
1. Shell의 실행 모드 종류
Shell의 실행모드에 따라 사용되는 로딩되는 initialization file 이 차이가 있으므로 실행모드에 대한 이해가 중요함.
- Login Shell:
- 시스템에 처음 로그인하거나 SSH로 접속할 때,
- 혹은
bash --login처럼 명시적으로 loging shell로 실행하겠다는 옵션을 주고 실행할 때 를 가리킴
- Non-login Interactive Shell:
- 이미 로그인한 상태에서 새 터미널 창을 열거나,
bash또는zsh명령어로 새 쉘을 띄울 때.
리눅스에서 터미널을 열면, Non-login Interactive Shell모드로 시작하고,
macOS의 경우엔 Login Shell 모드로 동작함.
WSL의 경우는 macOS와 비슷한 것으로 알고 있음: 윈도우즈의 터미널에서 wsl 입력하여 실행시 Login Shell로 동작한다고 하는데 애매모호하다.
거의 대부분 .bashrc 와 .zshrc 에 쓰면 됨: 90년대 후반 실험실 선배님 말씀.
2. Bash
2-1. 로딩 순서
- Login Shell 실행 시:
/etc/profile(시스템 전역 설정)- 다음 순서대로 가장 먼저 발견되는 파일 하나만 로드
~/.bash_profile~/.bash_login~/.profile
- 보통
~/.bash_profile또는~/.profile안에~/.bashrc를 불러오는 코드가 들어있어,
로그인 시에도.bashrc내용이 적용되는게 일반적임. - 참고로 Ubuntu 등에는 .profile에서 .bashrc를 로딩하는데...
사용자가 .bash_profile을 만들어서 추가하면 갑자기 .bashrc를 읽지 않는 문제가 생기기도 한다. ==;;
- Non-login Interactive Shell:
~/.bashrc
2-2. 파일별 역할
.profile/.bash_profile:- 역할: 로그인할 때 단 한 번 실행되면 좋은 설정들.
- 내용: 환경 변수(
PATH,JAVA_HOME등), 시스템 전역 설정. - 특징: Bash뿐만 아니라 sh 등 다른 쉘과 호환성을 위해
.profile을 쓰기도 함.
.bashrc:- 역할: 쉘이 실행될 때마다 필요한 설정들.
- 내용:
alias(단축어), 프롬프트 모양(PS1), 쉘 옵션, 자동 완성 설정.
주로 .bashrc를 사용하는게 WSL에선 안전하고, Ubuntu등에선 .profile에서 .bashrc를 읽어오는 스크립트가 있음.
~/.profile 을 뒤져보면 다음과 같은 코드로 .bashrc를 읽어들인다.
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
3. Zsh
3-1. 로딩 순서
Zsh은 Bash보다 보다 체계적인 편임.
.zshenv(항상 실행).zprofile(로그인 쉘일 때만).zshrc(스크립트 실행을 위해 사용되는 경우 제외하고 항상 로드!).zlogin(로그인 쉘일 때만, 초기화가 끝난 후)
3-2. 파일별 역할
.zshenv:- 역할: 쉘 실행 시 무조건 가장 먼저 실행.
- 내용:
- 정말 필수적인 환경 변수(
PATH등)만 정의 권장. - 여기에 출력 명령(
echo등)을 넣으면scp등을 이용한 파일 전송 시 오류가 날 수 있음.
- 정말 필수적인 환경 변수(
.zprofile:- 역할: Bash의
.profile과 동일. 로그인 시 한 번 실행. - 내용: 환경 변수 설정 등.
- 역할: Bash의
.zshrc: (사용자가 가장 일반적으로 사용함)- 역할: 사용자가 터미널을 사용할 때 필요한 설정 (가장 많이 수정하는 파일).
- 내용:
alias,- 테마(Oh-My-Zsh), 플러그인, 프롬프트 설정 등등
.zlogin:- 역할: 로그인 쉘 로딩의 맨 마지막.
- 내용: 쉘이 다 뜬 뒤 실행할 환영 메시지나 초기화 완료 스크립트.
macOS에서 iterm2나 터미널로 새 윈도우 또는 새 tab으로 실행시 항상 Login Shell이므로, .zprofile과 .zshrc가 모두 실행됨. 많은 경우 .zshrc에 대부분의 내용이 기재된다.
같이보면 좋은 자료들
2023.09.11 - [Linux] - [zsh] install Zsh and oh-my-zsh:
[zsh] install Zsh and oh-my-zsh:
Zsh 란?Zsh는 1990년에 출시된 유닉스 셸 및 명령어 인터프리터:bash, ksh, tcsh 등 다른 셸의 가장 유용한 기능들을 통합하고 풍부한 테마와 플러그인 생태계를 통해 강력한 사용자 경험을 제공.특히
ds31x.tistory.com
2023.06.20 - [개발환경] - [Env] Oh-My-Posh
[Env] Oh-My-Posh
Oh-My-Posh는 Command Line Interface(cli)에서 prompt 부분을 customize할 수 있게 해주는 custom prompt engine이다.유사한 것으로는 Oh-My-Zsh 이 있음 (사실 oh-my-zsh이 먼저고 이를 bash등에서 가능하도록 만들어준 것
ds31x.tistory.com
'shell' 카테고리의 다른 글
| grep (Global Regular Expression Print) (0) | 2025.12.31 |
|---|---|
| PowerShell의 초기화-profile (0) | 2025.12.31 |
| iconv, clip.exe, pbcopy, xclip, Set-Clipboard (0) | 2025.12.29 |
| kill: Process에게 Signal을 보내기. (3) | 2025.07.25 |
| Shell 함수 기본: bash, zsh에서 함수 사용하기 (3) | 2025.07.25 |