
В моей текущей настройке все истории 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 вы также можете добавить любое перенаправление в любой глобальный файл по вашему желанию: просто добавьте в него последнюю команду перед каждым приглашением ? (осторожно: некоторые могут быть многострочными)