이 질문은 다음과 다릅니다.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