なぜ`echo bash`はすぐに終了するのですか?

なぜ`echo bash`はすぐに終了するのですか?

次の操作はすべて効果がありません。

echo bash | bash
echo dash | dash
echo "bash -c bash" | bash
echo "dash -c dash" | dash

なぜ?たとえば、最初の行では bash インスタンスを作成し、それ入力を待つ別のbashインスタンスが作成されます。ただし、入力を待たずに終了します。親bashも終了します。したがって、両方のbashインスタンスがシャットダウンされ、このコマンドを起動したシェルインスタンスに戻ります。私はどこで間違って理解しましたか?

ベストアンサー1

2番目のbashインスタンスするbashstdin(文字列を読み取るパイプと同じ)で入力を待ちますが、プロセスが終了してechoパイプの書き込み終了が閉じたときにのみEOFを受け取ります。

2番目のbashにいくつかの入力を提供することもできます。

(echo bash; echo echo hjello) | bash
hjello

おすすめ記事