Как настроить отдельные файлы истории Bash для каждого контейнера наряду с единым файлом истории?

Как настроить отдельные файлы истории Bash для каждого контейнера наряду с единым файлом истории?

В моей текущей настройке все истории bash хранятся в одном файле, который указывает на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 ответов на этот вопрос(протестируйте тот вариант, который подходит вам лучше всего)

В PROMPT_COMMAND вы также можете добавить любое перенаправление в любой глобальный файл по вашему желанию: просто добавьте в него последнюю команду перед каждым приглашением ? (осторожно: некоторые могут быть многострочными)

Связанный контент