shopt login_shell 명령어로 로그인쉘 여부를 확인할 수 있다.
로그인쉘과 비로그인쉘의 차이점은 환경설정 파일을 적용하는 데 있다.
로그인쉘의 경우 /etc/profile, ~/.bash_profile 의 환경설정 파일에 영향을 받지만 비로그인쉘의 경우 영향을 받지 않는다.
로그인 쉘
Linux는 사용자가 자신의 계정에 로그인할 때 로그인쉘을 시작한다. 로그인쉘은 로그인할 때 수행되는 기본 쉘이다. logout 명령으로 로그아웃하여 쉘을 종료할 수 있다.
- 터미널을 통해 SSH를 통해 리눅스 시스템에 접근할 때
- “su -” 명령어를 통해 user를 바꿀 때
다음과 같은 순서로 명령을 실행한다.
- /etc/profile 을 실행
- /etc/profile은 /etc/profile.d 안에 있는 스크립트들을 실행
- $HOME/ .bash_profile 실행 (or ~/.bash_login or ~/.profile)
- $HOME/ .bash_profile 은 $HOME/ .bashrc 파일 실행
- $HOME/ .bashrc 는 /etc/bashrc 파일을 실행
/etc/profile
- 시스템 전역(모든 user)에 대한 환경설정 파일이다.
- bash 쉘의 주요 기본 시작 파일이다.
- 시스템에 로그인할 때마다 bash는 /etc/profile 시동 파일에 있는 명령을 실행한다.
$HOME/.bash_profile
- 개인 사용자에 대한 환경설정 파일이다.
- HOME 디렉토리에 있으며, 사용자 환경에 맞게 환경변수를 설정한다.
- /etc/profile에서 설정한 전역 변수들을 덮어 사용할 경우도 있다.
$HOME/.bashrc
- Alias와 Bash가 수행될 때 실행되는 함수를 제어하는 지역적 시스템 설정과 관련된 파일
비로그인 쉘
로그인 쉘로부터 파생되는 쉘로써 로그인이 아닌 다른 방식으로 떠있는 쉘이다. logout 명령을 사용할 수 없으며 exit 명령어를 통해 나갈 수 있다.
- SSH로 리눅스 시스템에 접근 후, bash shell을 실행한 경우
- GUI 세션에서 터미널을 띄우는 경우
새로운 환경변수를 설정할 때 non-login shell경우 .bashrc 파일을 이용해야 한다.
다음과 같은 순서로 명령을 실행한다.
- ~/.bashrc를 실행
- ~/.bashrc는 /etc/bashrc를 실행
- /etc/bashrc는 /etc/profile.d 내 스크립트 실행
/etc/bashrc
- 시스템 전역 (모든 user)에 대한 환경설정 파일이다.
~/.bashrc
- 개인 사용자에 대한 환경설정 파일이다.
'리눅스(Linux)' 카테고리의 다른 글
[Linux] chmod (0) | 2023.07.29 |
---|---|
[Linux] 리눅스 능력 (getcaps) (0) | 2023.07.29 |
[Linux] 리눅스 setuid, setgid (0) | 2023.07.28 |
우분투 네트워크간 접속, 포트포워딩 (0) | 2020.10.07 |
[리눅스] 사용자 및 그룹관리 & 파일 소유권 & 프로세스 & 패키지 관리 & 쉘스크립트 (0) | 2020.09.08 |