If you consider interaction with the shell as a kind of conversation, it’s a natural extension to refer back to things “mentioned” previously. You may type a long and complex command that you want to repeat, or perhaps you need to execute a command multiple times with slight variation.
If you work interactively with the original Bourne shell, maintaining such a “conversation” can be a bit difficult. Each repetitive command must be entered explicitly, each mistake must be retyped, and if your commands scroll off the top of your screen, you have to recall them from memory. Modern shells such as bash include a significant feature set called command history, expansion, and editing. Using these capabilities, referring back to previous commands is painless, and your interactive shell session becomes much simpler and more effective.
The first part of this feature set is command history. When
bash is run interactively, it provides access to
a list of commands previously typed. The commands are stored in the
history list prior to any interpretation by the
shell. That is, they are stored before wildcards are expanded or
command substitutions are made. The history list is controlled by the
HISTSIZE shell variable. By
HISTSIZE is set to 1,000
lines, but you can control that number by simply adjusting
HISTSIZE’s value. In addition to commands
entered in your current bash session, commands
from previous bash sessions are stored by default
in a file called