コンテナごとに別々のBash履歴ファイルと統合履歴ファイルを設定するには?

コンテナごとに別々のBash履歴ファイルと統合履歴ファイルを設定するには?

現在の設定では、すべてのbash履歴は、次を指すファイルに保存されます。HISTFILE.

この履歴には、ホストシステムとすべてのコンテナの履歴が含まれます。

この記録に加えて、各コンテナに設定したいと思いますbash_history_<cont_name>

設定の詳細:

  • ホストシステムにはドッカーコンテナ設定があります。
  • すべてのコンテナは/home/uname/ホストシステムと共有されます。 (.bashrcも共有されます)
  • [ホストとすべてのコンテナ]のすべてのコマンド履歴が記録されますHISTFILE
  • クイックアップデートのために、HISTFILE次のように.bashrcのプロンプトを更新してください。
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

このシステムが装備されています。また、コンテナ内で使用されたコマンド履歴をそのコンテナ関連ファイルに保存したいと思います。

前任者。コンテナの場合、ContAコマンドContB,履歴はパブリック「HISTFILE」に保存され、個々のコンテナのコマンド履歴も更新する必要があります。の場合もContA更新~/bash_history_ContAする必要があります。

PS:単一ファイルのコマンド履歴は、コマンドの実行直後に更新されます。各bash_history_<cont_name>コンテナは遅延更新ファイルである可能性があります。

答え1

「コマンドの実行直後に単一ファイルコマンド履歴を更新する」の場合は、次のコマンドを使用してこれを実行できます。この質問に対する3つの答えの1つ(どんなものがあなたに最適かをテストしてください)

PROMPT_COMMANDでは、必要なグローバルファイルにリダイレクトを追加することもできます。各プロンプトの前に最新のコマンドを追加するだけです。 (注意:一部は複数減らすことができます)

関連情報