I often run the most recent build of my login shell (zsh). Yesterday, the most recent build was defective, and it crashed immediately. Running it in a terminal was no huge problem since I had other open terminals running stable versions so I could correct the link to the defective shell.  However, I stupidly rebooted with the defective shell active in /etc/passwd, and on reaching the login prompt, login was impossible due to the defective shell.  I'm wondering if there is some way around that, i.e. some way of setting a fallback shell, or getting the login to prompt you for another shell in case the default is defective ... anything like that.  As it is, I rebooted to a backup install, and made the repair that way, but it's a bit clumsy.
login failure due to faulty shell
login
If the shell was totally defective and just exited with an error as soon as it was invoked, you could make a fake shell that was just a POSIX shell script that ran your shell and or the exit code with itself as a fallback.#!/bin/sh# this is usually some incredibly limited shell like dashfallback_shell=/bin/shprimary_shell=$(getent passwd `whoami` | cut -d: -f7)$primary_shell || $fallback_shell