I did a huge mistake
Você fez de fato. A maneira de recuperar isso é encontrar uma maneira de executar um comando como superusuário, mas sem usar o shell de login configurado do superusuário.
Os modos de resgate e emergência não conseguirão isso, a menos que você tenha a sorte de ter /usr em um volume de disco separado - ironicamente o oposto da tendência dos últimos 30 anos. Se o volume do disco contendo /usr/local/bin/st não for a raiz, o arquivo não será executável. Em tal situação, um login de emergência com os gostos de sulogin ou emergency-login tentará para voltar a um nome de shell com fio.
Outra maneira de conseguir isso é com a opção -s para sudo , que executa o shell fornecido pela variável de ambiente SHELL como o shell interativo, em vez do shell fornecido no banco de dados de contas do usuário para o superusuário . (Contraste a opção -i .)
doas -s da mesma forma emprega o shell especificado pela variável de ambiente SHELL .
Alguns comandos su dos sistemas operacionais também podem fazer isso com uma opção --shell . Isso não é universal, no entanto. Além disso, ele é ignorado, como você encontrou, se o shell do superusuário no banco de dados da conta não estiver na lista de shells autorizados ( /etc/shells ).