로그인 쉘의 의도된 목적은 무엇입니까?

로그인 쉘의 의도된 목적은 무엇입니까?

Bash 매뉴얼은 다음과 같이 말합니다:

로그인 쉘에 대한 인수가 없는 첫 번째 문자는 "-"이거나 --login 옵션과 함께 호출됩니다.

이는 시작 방법에 따라 로그인 셸을 정의합니다.

또는 의도된 목적에 따라 로그인 쉘을 정의할 수 있습니까?

예를 들어, 로그인 쉘을 사용자가 로그인해야 하는 쉘로 정의할 수 있습니까? 예를 들어, 로그인이 아닌 대화형 bash 셸에서 create bash login 셸을 실행하면 bash --login로그인할 필요가 없습니다. 내 사용자 이름과 비밀번호가 암시적으로 캐시되어 재사용되기 때문입니까, 아니면 단지 로그인 작업을 수행하지 않는 것입니까?

로그인을 수행하기 위해 로그인 쉘이 반드시 필요하지 않은 경우, 그 의도된 목적은 무엇이며, 로그인 쉘과 비로그인 쉘을 구별하는 특징이 있습니까?

감사해요.

답변1

로그인은 쉘이 아닌 다른 도구로 처리됩니다.예를 들어 login자체 또는 데스크탑 관리자(PAM 및 기타 다양한 도구의 도움으로).

이것목적로그인 셸의 역할은 로그인을 처리하는 것이 아니라 로그인 세션의 첫 번째 셸로 적절하게 작동하는 것입니다. 이는 주로 로그인 세션당 한 번만 처리해야 하는 시작 파일을 처리하고 로그인 세션을 무단 액세스로부터 보호하는 것을 의미합니다. 특정 시스템 기능(특히 작업 일시 중지)과 상호 작용하는 데 필요합니다.

최소한 로그인 셸 세부정보배쉬에서 구현됨, 아래에 설명된 대로:

  • 로그인 쉘은 의 명령을 처리한 다음, /etc/profile및 사이에서 찾은 첫 번째 파일을 처리합니다(다음으로 시작된 비대화형 로그인 쉘이 아닌 경우).~/.bash_profile~/.bash_login~/.profile아니요옵션 --login);
  • logout대신 로그인 쉘 실행을 종료하십시오 exit.
  • 로그인 셸을 종료하면 모든 작업이 일시 중지됩니다.
  • 로그인 셸은 일시 중지할 수 없습니다.
  • 로그인 쉘 세트 HOME변수(POSIXly 올바른 모드 제외)
  • 로그인 쉘 login_shell쉘 옵션을 설정합니다.

답변2

당신은 자신의 질문에 대답했습니다.

bash --logincreate bash login shell을 실행할 때 로그인할 필요가 없습니다.

이는 귀하가 로그인되어 있고 귀하의 사용자 권한으로 응용 프로그램을 시작할 수 있는 환경이 이미 있다는 것을 의미합니다.
다행히 로그인 후 앱을 실행할 때마다 비밀번호를 입력할 필요가 없습니다.
주요 차이점은 옵션을 사용하는 -l것입니다 --login.

[bash] 먼저 /etc/profile 및 ~/.profile의 명령을 순차적으로 읽고 실행하려고 시도합니다.

(에서 발췌 man bash).

목적은 /etc/profile및 에서 이익을 얻는 것 입니다 ~/.profile. bash사용자 세션을 처리하는 구성 요소가 아닌 셸입니다. PAM로그인/비밀번호를 통해 귀하를 식별하는 역할을 담당하는 Linux 구성 요소입니다.

관련 정보