$$特殊変数から取得したPIDを使用してシェルを終了できないのはなぜですか? [コピー]

$$特殊変数から取得したPIDを使用してシェルを終了できないのはなぜですか? [コピー]

$$特殊変数がシェルのプロセス番号を保持していることがわかった後、単にシェルを終了しようとしましたが、うまくいきませんkill <pid obtained by echo $$>でした。また、いくつかのバリエーションを試しましたが、効果がありませんでした。 ここに画像の説明を入力してください。

答え1

Bashのマニュアルをチェックしてください:

Bashがインタラクティブの場合、トラップなしでSIGTERMを無視します。

https://www.gnu.org/software/bash/manual/bashref.html#Signals

killヘルプテキストを確認してください(help killbashプロンプトで):

SIGSPEC と SIGNUM の両方がない場合、SIGTERM と見なされます。

https://www.gnu.org/software/bash/manual/bashref.html#index-kill

答え2

あなたはできますが、それが必要であるかどうかは絶対に確信していない限り、シェルは死なないようにします。

SIGHUPが機能します(SIGKILLと同じ)。次のことを試すことができます。

kill -HUP $$

(必要に応じてHUPこれを数値信号識別子に置き換えることができます1。)

これが機能するのSIGHUPは、モデムのシリアル回線接続が終了したとき(電話回線が切断された場合など)が送信される信号であるためです。

関連情報