서브셸, bash 및 ZSH에 있는지 어떻게 감지합니까?

서브셸, bash 및 ZSH에 있는지 어떻게 감지합니까?

이 질문은 다음과 다릅니다.Bash에서 내가 서브셸에 있는지 어떻게 감지합니까?쉘 특정이 아니기 때문입니다.

터미널을 열고 이렇게 zsh드릴다운할 수 있다고 가정해 보겠습니다.

$ echo $$
359648
$ zsh
$ echo $$
359706
$ zsh
$ echo $$
359746
$ exit
$ echo $$
359706
$ exit
$ echo $$
359648

첫 번째 호출에서 우리가 서브쉘 생성을 거부했다는 zsh사실을 인식하고 싶습니다 . zsh쉘이 단지 일반 프로그램이고 "하위 쉘"의 개념이 단지 기본 추상화일 뿐이라는 것을 깨닫고 상위 쉘 내에 동일한 쉘을 생성하는 것이 가능합니까?

  • 이 상황을 감지하는 것이 가능합니까?회의성취하다?
  • 언제 이런 일이 발생했는지 감지할 수 있습니까?

이 질문은 구체적으로 다루지 않습니다.zsh

답변1

이런 건 어때?

thisshell=$(ps -o comm= -p $$)
if [ $(ps -o comm= -p $(ps -o ppid= -p $$)) == "$thisshell" ]
then
   echo subshell
else
   echo not subshell or different shell
fi

관련 정보