この質問は次のように異なります。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