When I run history
in Bash, I get a load of results (1000+). However, when I run history
the zsh shell I only get 15 results. This makes grepping history in zsh mostly useless.
My .zshrc
file contains the following lines:
HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory
How can I fix zsh to make my shell history more useful?
UPDATE
If in zsh I call history 1
I get all of my history, just as I do in Bash with history
. I could alias the command to get the same result, but I wonder why does history
behave differently in zsh and in Bash.
NVaughan (the OP) has already stated the answer in an update to the question: history
behaves differently in bash
than it does in zsh
:
In short:
history
lists only the 15 most recent history entrieshistory 1
lists all - see below.history
lists all history entries.
Sadly, passing a numerical operand to history
behaves differently, too:
history <n>
shows all entries starting with <n>
- therefore, history 1
shows all entries.history -<n>
- note the -
- shows the <n>
most recent entries, so the default behavior is effectively history -15
)history <n>
shows the <n>
most recent entries.history
doesn't support listing from an entry number; you can use fc -l <n>
, but a specific entry <n>
must exist, otherwise the command fails - see below.)Optional background info:
history
is effectively (not actually) an alias for fc -l
: see man zshbuiltins
man zshall
history
is its own command whose syntax differs from fc -l
man bash
fc -l <fromNum> [<toNum>]
to list a given range of history entries:
<fromNum>
must exist.fc -l 1
works in zsh to return all history entries, whereas in bash it generally won't, given that entry #1 typically no longer exists (but, as stated, you can use history
without arguments to list all entries in bash).