Changing bash history length
To increase the history length of your command history simply redefine the
HISTFILESIZE variable into your
.bash_profile. For example:
will quadruple the default value.
Checking bash history
Everybody know the standard
history command, but do you know you this command can take options ?
For example for displaying only the last 5 commands:
For writing the current display to a file:
history -w /tmp/foobar.txt
There is a ton of other options for modify or filter the ouput, built-in into the
Disable bash history
HISTFILESIZE variable to zero will disable bash command history completely. Having the history file disabled does not effect command recall for the current session.
Executing commands from bash history
Just give the command number. For example for the 51th command:
For the last command use the shortcut:
Dealing with multiple bash session
By default, bash writes its history at the end of each session, overwriting the existing file with an updated version. This means that if you are logged in with multiple sessions, only the last one to exit will have its history saved.
To bypass this limitation you can add the following into your
shopt -s histappend
Unlimited bash history
Beware: unlimited bash history could slow down your session.
If you want an unlimited bash history you can modify your
.bash_profile like this:
# Unlimited bash history setting # http://stackoverflow.com/questions/9457233/unlimited-bash-history export HISTFILESIZE= export HISTSIZE= export HISTTIMEFORMAT="[%F %T] " # Change the file location because certain bash sessions truncate .bash_history file upon close. export HISTFILE=~/.bash_unlimited_history
What is the difference between HISTSIZE and HISTFILESIZE ?
HISTSIZE is the number of lines or commands that are stored in memory in a history list while your bash session is ongoing.
HISTFILESIZE is the number of lines or commands that are allowed in the history file at startup time of a session, and also are stored in the history file at the end of your bash session.