왜 로그인, 비 로그인, 대화식 및 비 대화식 bash 쉘이 있습니까?


23

그렇게 bash는 매뉴얼 페이지 로그인 및 대화 형 쉘이 무엇인지 설명 :

로그인 쉘은 인수 0의 첫 문자가-이거나 --login 옵션으로 시작된 문자입니다.

대화식 쉘은 비 옵션 인수와 표준 입력 및 오류가 모두 isatty (3)에 의해 결정된 터미널에 연결되거나 -i 옵션으로 시작되는 -c 옵션없이 시작되는 쉘입니다. bash가 대화식 인 경우 PS1이 설정되고 $-i를 포함하여 쉘 스크립트 또는 시작 파일이이 상태를 테스트 할 수 있도록합니다.

나는 이것이 우리가 4 가지 유형의 쉘을 가질 수 있다는 것을 의미한다고 생각한다.

  • 대화식 로그인 쉘
  • 비 대화식 로그인 셸
  • 대화 형 비 로그인 셸
  • 비 대화식 비 로그인 셸

그러나 왜 대화식 / 비 대화식 및 로그인 / 비 로그인 셸이 있습니까? 왜 다양성? 쉘 유형이 하나뿐이라면 무엇을 잃을까요?

또한을 실행하여 로그인 쉘에 있는지 확인하려고하면 다음 echo $-을 출력합니다.

himBH

이러한 플래그 중 일부는 설명 여기 지만 h, Hm설명되지 않습니다. 이 깃발들을 모두 설명하는 장소가 있습니까?

답변:


21

이것들은 쉘의 다른 "유형"에 대한 나의 생각입니다. 불행히도 나는 처음부터 Un * x의 상승을 목격하지 않았습니다 (이 개념이 역사적으로 잘 확장되었다고 가정합니다).

  • 시스템에 로그인 할 때 (현재는 그래픽 X 로그인을 통해) 한 번 실행해야하는 작업이있을 수 있습니다. 예를 들어 어떤 종류의 서버에 대한 연결 설정, 오늘 할 일 목록, 일부 명령 자동 시작 등이 있습니다. 새 터미널을 열 때마다 끊지 않아야합니다. 그래서 설정 파일의 집합있다 ( /etc/profile, ~/.bash_login등, 정확한 목록은 설명서 참조) 만 공급 로그인 포탄입니다.
  • 따라서 연결을 닫으려면 일부 프로그램을 종료 ~/.bash_logout하고 로그인 쉘이 존재하는 경우 백업 스크립트를 실행하십시오 .
  • 그래서, "보통"나는,해야하지 바 ㄱ 터미널에서 사용하는 쉘 로그인 에서 내 개인 환경 설정을 읽어야 그럼에도 불구하고 쉘,하지만 ~/.bashrc내 키 바인딩은 쉘과 상호 작용하기를 원하기 때문에, - 따라서 이것이입니다 대화 형, 비 로그인 쉘.
  • 그리고 마지막으로, bash가 스크립팅에 사용될 때 이것 중 어느 것도 중요하지 않습니다. bash가능한 빨리 시작해야합니다. 즉, 설정 파일을 읽지 않아야합니다. 이것은이다 비대화 형, 비 로그인 쉘 .

그래서, 당신의 질문에 대한 대답 하나의 껍질 만 가지고 있다면 무엇을 잃을까요? 한마디로 "유연성"입니다.


두 번째 질문에 대한 답은 쉽습니다.

$-현재 옵션 세트를 나열합니다. 이것들은 명령 행 매개 변수에 의해 bash또는 set내장을 통해 설정 될 수 있습니다 . 따라서 매뉴얼에서 두 곳을 살펴 봐야합니다.

  • OPTIONS 섹션:

    -i        If the -i option is present, the shell is interactive.
  • SHELL BUILTIN COMMANDS섹션, 서브 섹션 set:

    -h      Remember the location of commands as they are looked up for execution.  This is enabled by default.
    -m      Monitor  mode.  Job control is enabled.  This option is on by default for interactive shells on systems that sup
            port it (see JOB CONTROL above).  Background processes run in a separate process  group  and  a  line  containing
            their exit status is printed upon their completion.
    -B      The shell performs brace expansion (see Brace Expansion above).  This is on by default.
    -H      Enable !  style history substitution.  This option is on by default when the shell is interactive.

1
우 나는 OP의 명확하게 구성된 질문에 대한 @mpy의 대답이 다소 유용한 정의를 성공적으로 엉망으로 만들 수 있다고 생각합니다. 그렇다면, 비 로그인 쉘은 로그인 쉘의 하위 집합 일까요?
tuk0z
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.