Personally I'd recommend not customising your shell and just learning to live with the defaults on whatever operating systems you tend to use. Makes it much quicker to be comfortable on a new machine because everything is already same as you're used to.

Or you could stick your dotfiles and other config in a repo and clone it onto the new machine. Some examples of approaches on this prior thread: https://news.ycombinator.com/item?id=11070797

I went a step further, and automated as much as I can with Ansible. Had to reinstall everything after an SSD failure recently, this made it a fun project. I'm also planning on upgrading my machine soon, so that should make the process a lot faster.

I started from this and customized it to my needs: https://github.com/geerlingguy/mac-dev-playbook