Bash Code to backup the history file in Linux
First, logrotate is a tool built to do exactly this sort of thing. I would recommend using that to achieve the effectively the same extremely reliably and with lots of configuration options. That said, some suggestions on the code as written:


ShellCheck is great; I would recommend following its recommendation to use (( i++ )).
wc -l counts the number of lines, not bytes or kilobytes, which seems to be what you want.
old, minus and i are not helpful names; I have to read and understand all the code in the context in order to understand what they mean.
It looks like you only ever replace the last of the 20 files once you have 20 backups.
You have five instances of ~/.bash_history, even though one of them is the value of a variable. I would pull that variable out and reuse it everywhere.
Use More Quotes™ - it's good for you and the code.
Rather than a special unnumbered backup file (~/.bash_history.old), why not just start numbering the backups immediately? That way you can get rid of at least two checks for whether that file exists ([[ ! -e ~/.bash_history.old ]] and its inverse, [[ -e $name$old ]]).