スクリプトで決定するのはとても簡単です。実行中のコードが対話型シェルで実行されていません。しかし、スクリプトを書くときはすでに知っているので、関数の内部以外の目的で使用されるかどうかはわかりません(またはスクリプトを取得する場合)。
スクリプトからスクリプトが走る対話型シェルですか、それとも別のスクリプトで実行されますか?つまり、相互作用性をどのように決定しますか?発信者、招集者台本から?つまり、どうすればわかりますか?親シェルは対話型ですか?
もっと明確にすると、私はそのようなことを言うつもりはありません。最も近いインタラクティブな祖先の名前を探す、私はちょうど調べたいだけです。もしこれ即時親は相互作用しますか?
これがシェルによって異なる場合、私はzshに最も興味がありますが、bashにも興味があります。
ベストアンサー1
スクリプトがで始まると、#!/path
カーネルは関連付けられていない新しいシェルを起動します。
スクリプトにシェルコマンドのみが含まれている場合、シェルは分岐してエラーを受け取り、ENOEXEC
すべてのフラグをデフォルト値にリセットし、分岐したサブプロセスがスクリプトを実行します。
したがって、getppid()のようなものを使用してプロセステーブルを確認しない限り、これはできません。