유닉스/리눅스 셸에 따른 환경 변수 설정 파일

개요


유닉스/리눅스 시스템에서 시작 스크립트가 작동하는 순서는 셸이 로그인 셸인지 아닌지에 따라 달라집니다.

셸이 로그인 셸로 작동하는 경우는 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.
2)System login : Solaris는 없음. 리눅스는 /etc/csh.login을 사용함.
3)최근의 리눅스의 ksh는 사용자 홈 디렉토리의 .kshrc를 사용하는 경향이 있음.