
現在の設定では、すべての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 では、任意のグローバル ファイルへのリダイレクトを追加することもできます。各プロンプトの前に最新のコマンドを追加するだけです。(注意: 複数行になる場合があります)