-
-
Save thomaslaurenson/ae72d4b4ec683f5a1850d42338a9a4ab to your computer and use it in GitHub Desktop.
| # Custom history configuration | |
| # Run script using: | |
| # chmod u+x better_history.sh | |
| # sudo su | |
| # ./better_history.sh | |
| echo ">>> Starting" | |
| echo ">>> Loading configuration into /etc/bash.bashrc" | |
| echo "HISTTIMEFORMAT='%F %T '" >> /etc/bash.bashrc | |
| echo 'HISTFILESIZE=-1' >> /etc/bash.bashrc | |
| echo 'HISTSIZE=-1' >> /etc/bash.bashrc | |
| echo 'HISTCONTROL=ignoredups' >> /etc/bash.bashrc | |
| echo 'HISTIGNORE=?:??' >> /etc/bash.bashrc | |
| echo '# append to history, dont overwrite it' >> /etc/bash.bashrc | |
| echo 'shopt -s histappend' >> /etc/bash.bashrc | |
| echo '# attempt to save all lines of a multiple-line command in the same history entry' >> /etc/bash.bashrc | |
| echo 'shopt -s cmdhist' >> /etc/bash.bashrc | |
| echo '# save multi-line commands to the history with embedded newlines' >> /etc/bash.bashrc | |
| echo 'shopt -s lithist' >> /etc/bash.bashrc | |
| echo '# After each command, append to the history file and reread it' >> /etc/bash.bashrc | |
| echo 'export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$"\n"}history -a; history -c; history -r"' >> /etc/bash.bashrc | |
| # Reload BASH for settings to take effect | |
| echo ">>> Reloading BASH" | |
| exec "$BASH" | |
| echo ">>> Finished. Exiting." |
Thanks for your blog post on bash history, and this script.
I'm still evaluating, but as of now, I wonder if your PROMPT_COMMAND is, uh... "a universally good thing"?
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$"\n"}history -a; history -c; history -r"
Here's why: At times, I keep 2 or 3 SSH sessions open to hosts where I use bash as the interactive shell. I use these sessions for different purposes; e.g. one session may be used for script development, while another is used for support... man whatever & that sort of thing. Working this way, a unique session history has advantages. For me, PROMPT_COMMAND='history -a' is all I really want while I am working - I don't need a "merged" history from other sessions. This of course is personal; it depends on one's use case or workflow.
So that's it - just a comment with another point of view.
The blog is not working anymore, but Wayback Machine has a copy: https://web.archive.org/web/20210520231125/https://www.thomaslaurenson.com/blog/2018-07-02/better-bash-history/
@thomaslaurenson, I love this script. 2 things:
# Caveat: when switching between bash sessions user must hit enter key to update bash history from other sessions"\n"so that it becomes'\n'. I don't think it is causing a problem in this instance. But when I was trying figure out why sessions weren't updating history I was distracted by this and thought that it might be causing the problem.Again, thanks for the great blog post and script.