この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.