Skip to content

Instantly share code, notes, and snippets.

@djKianoosh
Forked from leipzig/mycd.sh
Last active November 6, 2015 20:30
Show Gist options
  • Save djKianoosh/ef4a535951c903b58f32 to your computer and use it in GitHub Desktop.
Save djKianoosh/ef4a535951c903b58f32 to your computer and use it in GitHub Desktop.
directory based history bash profile
function cd_dir_history()
{
OLDPWD="$PWD"
echo "# $(date) $USER -> $@" >> "$HISTFILE"
command cd "$@"
# If this directory is writable then write to directory-based history file
# otherwise write history in the usual home-based history file.
touch "$PWD/.dir_bash_history" 2>/dev/null \
&& export HISTFILE="$PWD/.dir_bash_history" \
|| export HISTFILE="$HOME/.bash_history";
echo "# $(date) $USER <- $OLDPWD" >> "$HISTFILE"
}
# Replace the regular `cd` command.
alias cd="cd_dir_history"
#initial shell opened
export HISTFILE="$PWD/.dir_bash_history"
#timestamp all history entries
export HISTTIMEFORMAT="| %Y-%m-%d %H:%M:%S | "
export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=1000000
export HISTFILESIZE=1000000
export HISTIGNORE="exit:sutom:top:sync:l:ll:pwd:history"
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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment