대화형 쉘을 대화형으로 만드는 것은 무엇입니까?

대화형 쉘을 대화형으로 만드는 것은 무엇입니까?

이 질문은 어리석게 보일 수도 있지만 netcat 연결을 통해 멍청한 쉘을 업그레이드하는 방법을 알아내려고 노력하는 동안 이 질문에 부딪혔습니다.

더 구체적으로 말하면, 특정 키 입력이 셸의 특정 동작을 트리거하는 원인에 대해 이야기하고 있습니다. 예: 위쪽 화살표 = 이전 명령, 왼쪽 화살표 = 왼쪽으로 1 이동, 지우기 = 화면 지우기 등...

답변1

Bash의 경우 매뉴얼 페이지에 다음과 같이 나와 있습니다.

부르다

   A login shell is one whose first character of argument zero is a -, or one
   started with the --login option.

   An interactive shell is one started without non-option arguments (unless -s is
   specified) and without the -c option whose standard input and error are both
   connected to terminals (as determined by isatty(3)), or one started with the -i
   option.  PS1 is set and $- includes i if bash is interactive, allowing a shell
   script or a startup file to test this state.

여러 셸의 시작 파일에서 다음과 같은 상호 작용 테스트를 볼 수 있습니다.

if [ "$PS1" ]; then
# set up for interactive use
fi

관련 정보