ジョブ制御を有効にして stdin を閉じた状態でバックグラウンドで bash スクリプトを実行すると、PARENTシェルが終了します。どうすればそれが起こりますか?
デモンストレーションするには、これを作成しますbackground_bash_script
:
#!/bin/bash
set -m
ruby -e "puts :here"
次に、bash で実行します。実行したシェルが終了します。Ruby コマンドは重要ではありませんが、コマンドである必要があり、bash 組み込みではないように見えます (たとえば、awk --version
動作しますがtrue
動作しません)。見やすくするために、さらに別の bash インスタンスで実行してみました。完全なセッションは次のようになります。
parent: PS1='child: ' bash
child: ./background_bash_script <&- &
[1] 3893
child: here
exit
parent:
紛らわしい!