サブシェル、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

関連情報