Как мне получить «предыдущую выполненную команду» в сценарии bash?

Я использую несколько сеансов 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

9
задан Yogeshwer Sharma 20 July 2011 в 02:32
поделиться