스크립트를 실행할 때 대화형 및 비대화형 셸의 의미에 대해 혼란스러워함

스크립트를 실행할 때 대화형 및 비대화형 셸의 의미에 대해 혼란스러워함

나는 이 콘텐츠에서 다음 내용을 읽었습니다.질문:

스크립트가 실행되는 셸은 항상 비대화형 셸이지만 스크립트는 사용자에게 값을 묻는 메시지를 표시하여 대화형 셸을 시뮬레이션할 수 있습니다.

위의 설명이 맞는지는 모르겠지만, 다음 설명이 맞는 것 같습니다.

  • 스크립트를 실행하고 데이터를 입력할 수 있는 셸은 대화형 셸입니다(인용문에서 말하는 것처럼 대화형 셸의 "에뮬레이션"이 아님).

  • 데이터 입력을 허용하지 않는 스크립트를 실행하는 쉘은 비대화형 쉘입니다.

어떤 진술이 맞나요?

답변1

스크립트를 실행하는 셸은 비대화형 셸입니다.

예를 들어 , 비대화형 쉘은 여전히 read​​표준 입력에서 데이터를 읽을 수 있습니다.

표준 입력이 터미널인 경우 이는 어느 정도의 "상호작용"을 제공할 수 있지만 스크립트를 실행하는 쉘을 대화형으로 만들지는 않습니다. 목요일스크립트그러나 그것은 "상호작용"이 될 것입니다.

이 텍스트는 다음 두 가지를 의미하기 위해 "대화형"이라는 단어를 사용하기 때문에 혼란스럽습니다.

  1. 쉘 스크립트를 실행하기 위해 시작된 쉘은 비대화형입니다(작업 제어가 없고 기본적으로 자체 프롬프트를 제공하지 않는다는 점에서 등). 이는 "로그인 쉘" 및 "대화형 쉘"과 같은 쉘 유형을 가리키는 기술 용어입니다.
  2. 동일한 스크립트를 통해 데이터를 가져오는 작업은 "대화형"일 수 있습니다(예: 파이프나 파일에서 읽지 않는 경우). 그러나 표준 입력에서 데이터를 가져오는 모든 명령은 대화형이라고 할 수 있습니다. tr 'a-z' 'A-Z'자체적으로 모든 소문자 ASCII 문자를 대문자로 "대화식으로" 변환합니다.

관련 정보