A Better Zsh History, pt. 1
A creative based in Los Angeles, CA
I recently combed through the dot (hidden) files in my mac’s home directory and was shocked to see just how polluted it had become. Now I know that there is no real downside to leaving these files where they were, but as I prefer to keep my development environment nice and tidy, I took the opportunity to take a closer look into some configurations that I had ignored up to this point.
Zsh config files
If you are unfamiliar with the types of zsh configuration files and their uses, I recommend looking through this article in a great series over at scriptingosx.com. For this example we will keep everything in the
.zshrc file. If one doesn’t already exist in your home folder, in the terminal run
touch .zshrc from inside of the home directory to make one.
The Zsh history mechanism only requires these first two parameters to be set up, but inside of the
.zsrc we can configure three:
To satisfy my original annoyance, let’s change the location of the history file. By default, the zsh setup wizard sets this parameter to
HISTFILE. I prefer this to be kept with some other generated zsh specific files at
~/.cache/zsh. So in the
.zshrc we can add:
# ~/.zshrc export HISTFILE="$HOME/.cache/zsh/zsh_history"
Note that you can name the file and the path differently than I have chosen.
SAVEHIST parameter sets the number of lines that you would like saved in your history and can be set according to your machines available resources. I’ve set it to 1000 but you can decrease or increase this number until your heart is content as explained here.
# ~/.zshrc export HISTFILE="$HOME/.cache/zsh/zsh_history" export SAVEHIST=1000
HISTSIZE parameter defines how many lines the shell will keep in one session and has a default of 30 lines. The documentation recommends a value that is no more than
SAVEHIST, so to give our shortcut seeking programmer selves just one value to maintain we can set this to 1000 and forward the value as a variable to
# ~/.zshrc export HISTFILE="$HOME/.cache/zsh/zsh_history" export HISTSIZE=1000 export SAVEHIST=$HISTSIZE
And that’s all there is to the initial setup. We’ve defined the history file’s location using
HISTFILE, specified how many lines will be saved using
SAVEHIST, and how many the shell keeps in the session with
In part 2 we will dive into the history options that make zsh customizable to your workflow.