Skip to content

Instantly share code, notes, and snippets.

@leipzig
Created January 21, 2012 03:36
Show Gist options
  • Save leipzig/1651133 to your computer and use it in GitHub Desktop.
Save leipzig/1651133 to your computer and use it in GitHub Desktop.
directory based history bash profile
function mycd()
{
#if this directory is writable then write to directory-based history file
#otherwise write history in the usual home-based history file
tmpDir=$PWD
echo "#"`date '+%s'` >> $HISTFILE
echo $USER' has exited '$PWD' for '$@ >> $HISTFILE
builtin cd "$@" # do actual cd
if [ -w $PWD ]; then export HISTFILE="$PWD/.dir_bash_history"; touch $HISTFILE; chmod --silent 777 $HISTFILE;
else export HISTFILE="$HOME/.bash_history";
fi
echo "#"`date '+%s'` >> $HISTFILE
echo $USER' has entered '$PWD' from '$OLDPWD >> $HISTFILE
}
alias cd="mycd"
#initial shell opened
export HISTFILE="$PWD/.dir_bash_history"
#timestamp all history entries
export HISTTIMEFORMAT="%h/%d - %H:%M:%S "
export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=1000000
export HISTFILESIZE=1000000
shopt -s histappend ## append, no clearouts
shopt -s histverify ## edit a recalled history line before executing
shopt -s histreedit ## reedit a history substitution line if it failed
## Save the history after each command finishes
## (and keep any existing PROMPT_COMMAND settings)
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
@mmcdaris
Copy link

mmcdaris commented Feb 7, 2014

This is cool, thanks for writing it and documenting.

@inodb
Copy link

inodb commented May 8, 2015

Looks interesting! Do you still use this or have you come up with a different way to do things?

@leipzig
Copy link
Author

leipzig commented May 23, 2015

I still use this although I recognize the use of both personal and directory-based histories.

@djKianoosh
Copy link

btw, for a global git ignore:
http://stackoverflow.com/a/22885996

so... in ~/.config/git/ignore have:
.dir_bash_history

@rvelseg
Copy link

rvelseg commented Jul 29, 2016

Awesome, Thanks :D

@pi-rho
Copy link

pi-rho commented Nov 6, 2020

nice chmod

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment