我使用多个bash会话,并且希望将它们的历史记录保存在一个文件中(我不在乎它是从多个会话复用的,我可以在前面放一个会话标识符)。我尝试过执行以下操作:
shopt -s histappend
并且加上
history -a
有很多方法可以将历史命令记录到Bash的$HISTFILE
文件中,包括将PROMPT_COMMAND
变量设置为一条记录历史命令的命令。但这些方法对我来说并不奏效,我也不知道为什么它们不行(据我观察,它们的行为非常不确定...有时会同时记录多个会话的命令,有时则不会)。
本问题的目标是探索一种替代的方式来记录所有会话的历史命令,以便我可以控制要写入历史记录的内容。想法是将“上一个命令”存储在一个shell变量中,然后在PS1
变量的定义中将该变量回显到一个历史日志文件中。
问题是:如何将“上一个执行的命令”获取到一个shell变量中?我知道可以在交互式Bash会话中执行echo !! >> logfile.txt
将其记录到日志文件中。但是在脚本文件(或.bashrc文件)中如何实现呢?
我已经尝试过:
PROMPT_COMMAND="PC=$_;"
PREVIOUS_COMMAND=$(echo $PC) # $_ only gives the last argument of previous command
export PS1="[\u@\h \w] [$PREVIOUS_COMMAND $(echo $_) $_] $ "
但是这些都不起作用。
感谢您的时间, ~yogi
$BASH_COMMAND
来执行一些操作。 - Carlos Campderrós