Bash 4.1 is able to log the history to syslog. However I can't seem to make it work under FreeBSD 8.
I've tried re-compiling bash from ports with -DWITH_SYSLOG= but to no avail. Has anyone managed to get logging to work under FreeBSD? How about Linux?


The better thing to do would be to turn on auditing, which will let you record every command run regardless of what shell they're using.

  • 1
    How to turn on auditing ??? can you make a complete answer – medBouzid Feb 27 '20 at 13:08

try this:

export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'

this does the logging AND it prevents logging of timestamps that are used for the bash history file. The trap is needed, since bash will send the signals to the "subjob" after pressing strg+c multiple times (tested with bash 4.3). this will force the logout of the current user (e.g. logged in with sudo)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.