統合された履歴ファイルと並行して、各コンテナーに個別の Bash 履歴ファイルを設定するにはどうすればよいでしょうか?

統合された履歴ファイルと並行して、各コンテナーに個別の Bash 履歴ファイルを設定するにはどうすればよいでしょうか?

現在の設定では、すべてのbash履歴は1つのファイルに保存されており、HISTFILE.

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

この履歴に沿って、コンテナごとに設定したいと思いますbash_history_<cont_name>

セットアップの詳細:

  • ホスト システムには Docker コンテナがセットアップされています。
  • すべてのコンテナは/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 では、任意のグローバル ファイルへのリダイレクトを追加することもできます。各プロンプトの前に最新のコマンドを追加するだけです。(注意: 複数行になる場合があります)

関連情報