how to run multiple versions of one shell on a single machine
If you're happy to build from source, you can install each version into a separate prefix, then adjust the path in your scripts accordingly.
bash, fish, ksh, tcsh, zsh, and dash all support the --prefix
argument to configure, so you can download each version, run ./configure --prefix=/opt/SHELL-VERSION; make; make install
. Then to use each version, set PATH to have /opt/SHELL-VERSION/bin
at the front.
csh is a bit different and will require more manual work; if you're sure you want it, you can extract the sources from the FreeBSD source tree and edit the Makefile, but most people actually use tcsh anyway.
I don't think there's a canonical source for ash but it will probably have a similar way of going about things.