Skip to main content
2 of 6
added 191 characters in body

Building off the answer provided by Groggle, you can create an alternative cd (ch) in your ~/.bash_profile like.

function ch () { cd $@ export HISTFILE="$(pwd)/.bash_history" } 

automatically exporting the new HISTFILE value each time ch is called.

The default behavior in bash only updates your history when you end a terminal session, so this alone will simply save the history to a .bash_history file in whichever folder you happen to end your session from. A solution is mentioned in this post and detailed on this page, allowing you to update your HISTFILE in realtime.

A complete solution consists of adding two more lines to your ~/.bash_profile,

shopt -s histappend PROMPT_COMMAND="history -a;$PROMPT_COMMAND" 

changing the history mode to append with the first line and then configuring the history command to run at each prompt.

Hope this is helpful!

EDIT: It was pointed out to me that problems may arise when the directory name contains spaces, but to address this issue, simply replace

$@ 

with

"$@" 

All the best!