このbashスクリプトが終了したときに呼び出しプロセスを終了するのはなぜですか?

このbashスクリプトが終了したときに呼び出しプロセスを終了するのはなぜですか?

このbashスクリプトを実行するとき背景のある、呼び出しシェルを終了します。なぜこれですか?

#!/bin/bash
#
# weird job control, background termination of parent shell problem
set -eum
echo "Do not go gentle into that good night"
sleep 1

別の名前で保存してwat実行しchmod +x watてくださいwat。問題ありません。走る背景のある:

wat &

現在のシェルが閉じます! ?さらに奇妙なことは、最後の睡眠ラインをコメントアウトすると、バックグラウンドでかなり幸せに実行できることです。誰でもこれを説明できますか?

-mこれが(作業制御)オプションに関連していることはわかりますが、setなぜそうなのかわかりません...

ベストアンサー1

Bash 4.3.30を使用してスクリプトを実行しますが、Bash 4.4.12を使用してスクリプトを実行すると、これが発生することがわかります。 (スクリプトを実行するシェルのバージョンはそれほど重要ではないようです。)

もう二つに分けていないが、その中にはこれがある変更ログ次のように適用できるようです。

This document details the changes between this version, bash-4.4-rc1, and
the previous version, bash-4.4-beta.

i.  Fixed a bug that caused background processes run from non-interactive shells
    with job control enabled to place the terminal in the wrong process group
    under certain circumstances.

おすすめ記事