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
).