유닉스/리눅스 셸에 따른 환경 변수 설정 파일
개요
유닉스/리눅스 시스템에서 시작 스크립트가 작동하는 순서는 셸이 로그인 셸인지 아닌지에 따라 달라집니다.
셸이 로그인 셸로 작동하는 경우는 telnet이나 ssh 등으로 로그인하는 경우, su - 명령으로 사용자 전환을 하는 경우입니다.
로그인 셸로 작동하지 않는 경우는 vim 등의 편집기 사용 도중 셸 명령을 사용하기 위해 셸을 실행한 경우, '-' 파라미터 없이 그냥 'su' 명령만으로 사용자 전환을 하는 경우입니다.
- 셸을 실행할 때 '-l' 옵션을 주어 실행하면 해당 셸이 로그인 셸로 작동하기도 합니다.
ex) $ bash -l - Xterm을 실행할 때 '-ls' 옵션을 주어 실행하면 Xterm 터미널 내의 셸은 로그인 셸이 됩니다.
내용
다음은 리눅스 및 유닉스(Solaris) 에서의 Shell 환경 변수 설정에 대한 내용입니다.
C Shell
- 셸이 로그인셸이 아닌 경우 : 시스템 cshrc -> 사용자 cshrc($HOME/.cshrc)
(시스템 cshrc : Solaris의 경우 /etc/cshrc, 리눅스의 경우 /etc/csh.cshrc) - 셸이 로그인셸인 경우 : 시스템 cshrc -> 시스템 login -> 사용자 cshrc -> 사용자 login($HOME/.login)
(시스템 login : Solaris는 없음. 리눅스 /etc/csh.login)
Bash Shell
- 셸이 로그인셸이 아닌 경우 : $HOME/.bashrc
- 셸이 로그인셸인 경우 : /etc/profile -> $HOME/.bash_profile
리눅스(레드햇 계열)의 경우 실제 작동 순서:
- 셸이 로그인셸이 아닌 경우: .bashrc(/etc/bashrc sourcing) -> /etc/bashrc
- 셸이 로그인셸인 경우: /etc/profile -> $HOME/.bash_profile(.bashrc sourcing) -> .bashrc(/etc/bashrc sourcing) -> /etc/bashrc
Korn Shell & Bourne Shell
- 셸이 로그인셸이 아닌 경우: 없거나 $HOME/.kshrc
(최근의 리눅스의 ksh는 사용자 홈 디렉토리의 .kshrc를 사용하는 경향이 있음.) - 셸이 로그인셸인 경우:/etc/profile -> $HOME/.profile
ZSH
- 셸이 로그인셸이 아닌 경우: /etc/zsh/zshenv => .zshenv => /etc/zsh/zshrc => .zshrc
- 셸이 로그인셸인 경우: /etc/zsh/zshenv => .zshenv => /etc/zsh/zprofile => .zprofile => /etc/zsh/zshrc => .zshrc => /etc/zsh/zlogin => .zlogin (로그아웃할 경우: zlogout => /etc/zsh/zlogout)
요약표
인터랙티브 셸일 경우 | 로그인 셸일 경우 | |
---|---|---|
C Shell(csh) | 시스템 cshrc1) ↓ 사용자 cshrc($HOME/.cshrc) | 시스템 cshrc ↓ 시스템 login2) ↓ $HOME/.cshrc ↓ 사용자 login($HOME/.login) |
Bash Shell(bash) | HOME/.bashrc | /etc/profile ↓ $HOME/.bash_profile |
일부 리눅스의 경우 실제 작동 순서 | ||
.bashrc(sourcing /etc/bshrc) ↓ /etc/bashrc | /etc/profile ↓ $HOME/.bash_profile(.bashrc sourcing) ↓ .bashrc(/etc/bashrc sourcing) ↓ /etc/bashrc | |
Korn Shell(ksh) | 없음 또는 사용자 .kshrc3) | /etc/profile ↓ $HOME/.profile |
Bourne Shell(sh) | 없음 | /etc/profile ↓ $HOME/.profile |
Z shell(zsh) | /etc/zsh/zshenv ↓ $HOME/.zshenv ↓ /etc/zsh/zshrc ↓ $HOME/.zshrc | /etc/zsh/zshenv ↓ $HOME/.zshenv ↓ /etc/zsh/zprofile ↓ $HOME/.zprofile ↓ /etc/zsh/zshrc ↓ $HOME/.zshrc ↓ /etc/zsh/zlogin ↓ $HOME/.zlogin ↓ $HOME/.zlogout ↓ /etc/zsh/zlogout |
1)System cshrc : Solaris의 경우 /etc/cshrc, 리눅스일 경우 /etc/csh.cshrc. |