優先順位はバックグラウンドジョブの実行にどのような影響を与えますか?

優先順位はバックグラウンドジョブの実行にどのような影響を与えますか?

私の2つの例は次のとおりです。

echo hi &

そして:

(echo hi &)

1つ目はプロセスIDを返します(例:)として提供し"[1] 5627"、優先順位演算子を追加すると削除されます。何が起こったのでしょうか?

また、優先順位を追加しながら、バックグラウンドジョブにそのプロセスIDを報告させる方法はありますか?

答え1

これはおおよそ職業管理。そのセクションを読んでくださいman bash

シェルの括弧は単純な優先順位演算子ではありません。彼らは新しい(サブ)シェルを始めます。

通常、ジョブ制御が有効になっている対話型シェルに入力します。コマンドを括弧で囲むと、ジョブ制御なしでサブシェルでコマンドが実行されます。

努力する:

sleep 10&
jobs

(sleep 10&)
jobs

最初のスリープモードは、jobsジョブ制御が有効なシェルで開始されたためにリストされます。 2番目はサブシェルによって開始されるため、そうではありません。

関連情報