![如何为每个容器设置单独的 Bash 历史文件以及统一的历史文件?](https://linux22.com/image/230942/%E5%A6%82%E4%BD%95%E4%B8%BA%E6%AF%8F%E4%B8%AA%E5%AE%B9%E5%99%A8%E8%AE%BE%E7%BD%AE%E5%8D%95%E7%8B%AC%E7%9A%84%20Bash%20%E5%8E%86%E5%8F%B2%E6%96%87%E4%BB%B6%E4%BB%A5%E5%8F%8A%E7%BB%9F%E4%B8%80%E7%9A%84%E5%8E%86%E5%8F%B2%E6%96%87%E4%BB%B6%EF%BC%9F.png)
在我当前的设置中,所有 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 中,您还可以将任何重定向添加到您想要的任何全局文件:只需在每个提示之前添加最新的命令即可? (小心:有些可能是多行的)