履歴がサブシェルに何も出力しないのはなぜですか?

履歴がサブシェルに何も出力しないのはなぜですか?

history私はサブシェルには何も出力されないことに気づきました。行数を数えてこれを見せようとしています。まず、echoを完全な検査として使用します。

$ echo a | wc -l
1

...そしてサブシェルから:

bash -c 'echo a' | wc -l
1

実際には、どちらの場合も単一の出力ラインを期待しています。今はhistory

$ history | wc -l
681

...しかし、サブシェルでは次のようになります。

$ bash -c 'history' | wc -l
0

...history行を返しません。

historyなぜこれが起こるのですか?サブシェルから現在のシェル(最後のセッションコマンドを含む)の履歴をどのように印刷しますか?

答え1

-c一つも作らないでくださいサブシェル;単純に新しい非対話型シェル(または現在のシェルとは独立した別のプロセスで非対話型実行環境)を作成します。そして:非対話型シェルでは、このhistoryコマンドは意図的に機能しません。

Bashスクリプトの履歴コマンド

関連情報