리눅스 시스템은 로그인 프로세스 중에 특정 위치에 있는 파일을 자동으로 읽는다.
각 파일은 특정 목적과 적용 범위를 가지고 있으며, 시스템 시작 시, 사용자 로그인 시, 새 shell 시작 시 등의 상황에 따라 로드된다.
리눅스 시스템에서 환경변수와 설정을 읽어들이는 일반적인 파일
/etc/environment
- 시스템 전체에 적용되는 환경변수
- PAM 모듈을 통해 시스템의 모든 사용자에게 영향을 미치는 변수를 설정한다.
/etc/profile
- 모든 사용자의 모든 로그인 shell 세션에 적용되는 글로벌 설정
- 시스템 전체의 기본 환경, 로그인 쉘 시작 스크립트 및 기타 system-wide 환경 설정을 포함한다.
~/.bash_profile
,~/.profile
,~/.bash_login
- 사용자의 홈 디렉터리에 위치한다.
- 사용자가 로그인 shell 세션을 시작할 때 실행된다.
- bash shell의 경우, 이 파일들 중 하나만 읽히고 여러개가 존재하면
~/.bash_profile
가 우선적으로 읽힌다.
~/.bashrc
- 비로그인 shell 세션 (새로운 터미널을 열 때)에 대한 사용자별 설정을 담고 있다.
- 로그인 쉘:
- 사용자가 시스템에 처음 로그인할 때 시작되는 쉘이다.
- 시스템에 물리적으로 로그인하고나 SSH와 같은 원격 접속 도구를 통해 로그인할 때 발생한다.
- 위에서 기술한
~/.bash_profile
,~/.profile
,~/.bash_login
과 같은 파일을 읽어 사용자 환경설정을 한다.
- 비로그인 쉘:
- 사용자가 이미 시스템에 로그인한 후 새로운 터미널 창을 열거나 새로운 쉘 세션을 시작할 때 생성된다.
- 이미 로그인한 상태에서 GUI 터미널 emulator를 열거나, bash 명령을 실행해 새 쉘을 시작하는 경우이다.
- 로그인 쉘:
- 비로그인 shell 세션 (새로운 터미널을 열 때)에 대한 사용자별 설정을 담고 있다.
/etc/bash.bashrc
- 일부 리눅스 시스템에서는 이 파일을 통해 모든 bash 사용자에게 적용되는 글로벌 설정을 수행한다.
~/bash_logout
- 사용자가 로그인 쉘을 종료할 때 실행되는 스크립트를 포함한다.
export
명령어를 통한 환경변수 설정
- 해당 쉘과 그 쉘에서 생성되는 모든 하위 프로세스에 대해서만 설정된다.
- 세션이 종료시 소멸된다.
- 예
- 현재 쉘 세션의 PATH 환경변수에
/opt/newapp/bin
경로를 추가한다.
- 현재 쉘 세션의 PATH 환경변수에
export PATH=$PATH:/opt/newapp/bin