My own method is zsh with oh-my-zsh:
But there are others. Some like Fish:
I have found that oh-my-zsh contains a bit more than FISH does.