Я использую несколько сеансов bash и хочу отслеживать историю всех из них в одном файле (меня не волнует, что он мультиплексирован из нескольких сеансов я всегда могу поставить перед ним идентификатор сеанса.) Я пробовал сделать
shopt -s histappend
, а также добавить
history -a
в переменную $ PROMPT_COMMAND
. Но ни один из них не работает для меня , и я не понимаю, почему они не работают (насколько я могу судить, они ведут себя очень недетерминированно ... иногда они мультиплексируют команды из нескольких сеансов, иногда нет).
этот вопрос состоит в том, чтобы изучить альтернативный способ сохранения истории всех сессий, где я могу контролировать, что я пишу в историю. Идея состоит в том, чтобы сохранить "предыдущую команду" в переменную оболочки, а затем отобразить эту переменную в файле журнала истории внутри определения переменной PS1
.
Вопрос: как мне получить «предыдущую выполненную команду» в переменной оболочки. Я знаю, что могу выполнить echo !! >> logfile.txt
в интерактивном сеансе bash, чтобы записать его в файл журнала. Но как мне сделать это в файле сценария (или файле .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