## BASH_HISTORY_FILE or HISTFILE
I find myself constantly using multiple terminals on the same system. The default bash history is a good start, but not enough for my needs. After endless searching, testing, ignoring, deleting, and procrastinating I finally found a solution that works for me.
1. Session Isolation
- I don't need new history items available across sessions
- Typically the work I am preforming is isolated but similar enough that having commands updated between sessions is both obnoxious and unhelpful.
2. Custom Timestamp
- I like seeing a particular timestamp format in my history output (helps me remember what I was doing at that time)
3. Dedupe
- Like I mentioned above, I don't need commands shared across terminal windows
- Also, I don't like duplicate uses of command in my history
- Sure I may lose the first, or prior, occurrence(s) of a command. But I only require the last use.
4. Write on session exit
- I don't want to lose my history to a `kill -i `
- I also don't want to lose my history if I close the wrong session tab
- dedupe only needs to happen at this point
5. Use only linux bash commands
- I don't want to download some fancy utility.
- use the fewest number of commands
6. Unlimited history
- computers are big enough and fast enough to handle this
- new versions of bash allow an unlimited history
## `~/.bashrc`
```
HISTCONTROL=ignorespace:ignoredups:erasedups
shopt -s histappend
HISTSIZE=-1
HISTFILESIZE=-1
HISTTIMEFORMAT="[%b %d,%Y %T] "
PROMPT_COMMAND="history -a;${PROMPT_COMMAND}"
```
## `/etc/profile.d/00-dedup-bash-history-on-exit.sh`
```
function deduphistory {
echo "deduphistory"
history -w ~/.bash_history.dedup_backup
history -n; history -a
tac ~/.bash_history | awk '!x[$0]++' | tac > ~/.bash_history_new_dedup
history -cr ~/.bash_history_new_dedup
history -w
}
# cleanup bash history on exit
trap deduphistory EXIT
```
## Profit
Watch your history get appended and deduped on exit.
No more lost history (mostly)
And be happy
### Files available as gists
https://gist.github.com/therevoman/a7532af575479f0a2b5edfbb0bef8212
Originally posted on github.
https://github.com/therevoman/nate-revo-blog/issues/2
Monday, September 19, 2022
Wrangling bash_history across multiple sesions
Subscribe to:
Post Comments (Atom)
Adding nerdctl to an OpenShift 4 Windows Node
# Getting a Windows Node on OpenShift ... Not what this post is about, follow the Red Hat and Microsoft documentation and then consult with...
-
# The Problem The Windows Server 2022 Core VM we were working with had a http proxy set but the OpenShift cluster was in an environment tha...
-
# Getting a Windows Node on OpenShift ... Not what this post is about, follow the Red Hat and Microsoft documentation and then consult with...
-
# Installing vim-console on Windows 2022 from PowerShell Working with Windows Containers has provided me tremendous education. Learning P...
No comments:
Post a Comment