리눅스/리눅스 기초

리눅스 데스크톱 환경에서 '로그인 셸'과 '일반 셸'의 차이

Linuxpia 2024. 11. 5. 13:11
반응형

리눅스 데스크톱 환경에서 '로그인 셸'과 '일반 셸'의 차이

리눅스 데스크톱 환경에서 '로그인 셸'과 '일반 셸'의 차이는 주로 셸이 초기화되는 방식과 환경 변수 설정의 차이로 구분됩니다. 이 두 셸의 주요 차이점은 다음과 같습니다.

1. 로그인 셸 (Login Shell)

  • 정의: 로그인 셸은 사용자가 시스템에 처음 로그인할 때 시작되는 셸을 말합니다. 이때는 사용자가 시스템에 접근을 인증한 후에 셸이 시작됩니다.
  • 실행 방식: 주로 bash -l 또는 단순히 로그인할 때 자동으로 시작됩니다.
  • 환경 설정 파일: 로그인 셸은 시스템 전체와 사용자별 초기화 파일을 실행하여 환경을 설정합니다. 대표적인 설정 파일은 다음과 같습니다.
    • /etc/profile : 시스템 전체에 적용되는 설정 파일
    • ~/.bash_profile, ~/.bash_login, ~/.profile : 사용자별로 적용되는 설정 파일
  • 환경 변수: 로그인 셸은 기본적으로 시스템 및 사용자별 환경 변수들을 모두 초기화하므로 환경 변수 설정이 완전하게 이루어집니다. 보통 PATH, LANG과 같은 변수가 설정되며, 전체 환경을 설정합니다.

2. 일반 셸 (Non-Login Shell)

  • 정의: 일반 셸은 이미 로그인한 후에 터미널을 열거나 새로운 셸 세션을 시작할 때 사용하는 셸을 말합니다. 주로 GUI 환경에서 터미널을 실행할 때 이 일반 셸이 사용됩니다.
  • 실행 방식: 일반 셸은 bash 명령어로 시작되며, -l 옵션을 사용하지 않습니다.
  • 환경 설정 파일: 일반 셸에서는 로그인 셸과 달리 기본적으로 다음 설정 파일만 읽어옵니다.
    • ~/.bashrc : 사용자별 설정 파일
    • 일반 셸은 시스템 전체 초기화 파일을 건너뛰고, 개인 설정 파일만 불러옵니다.
  • 환경 변수: 일반 셸은 로그인 셸이 이미 설정한 환경 변수를 그대로 가져옵니다. 따라서 새로운 PATH를 추가하거나 시스템 환경에 대한 변경이 필요할 때는 로그인 셸을 사용해야 합니다.

사용 예시와 상황에 따른 선택

  • 로그인 셸: SSH로 원격 서버에 접근하거나 시스템에 직접 로그인할 때 사용하는 셸입니다. 이때는 전체 환경을 초기화하고, PATH나 기타 환경 설정을 완전히 적용합니다.
  • 일반 셸: GUI에서 터미널을 열 때나 이미 로그인한 상태에서 새로운 셸을 열 때 주로 사용됩니다. 로그인 시 설정된 환경을 그대로 이어받기 때문에 추가적인 초기화가 필요하지 않은 경우에 유용합니다.

'로그인 셸'과 '일반셸'의 차이를 보기 위한 테스트

정리

로그인 셸은 초기 로그인 시 전체 환경을 설정하는 데 사용되고, 일반 셸은 로그인 셸의 설정을 그대로 이어받아 이후 작업을 진행할 때 사용됩니다. 데스크톱 환경에서는 GUI환경이 시작되면서 로그인이 이루어지기 때문에 '로그인 셸'은 큰 의미가 없지만 원격 시스템에 로그인할 때는 '로그인 셸'을 거칩니다.