No apagues tu máquina.
¿Todavía tienes un shell en ejecución? ¿Es bash? Si es así, estás bien. (Pero no vuelvas a hacer esto).
Ejecutar:
sudo cp /proc/$$/exe /bin/bash
Voila, todo está bien.
Ya que alguien en los comentarios duda que esto funcione:
[[email protected] ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[[email protected] ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[[email protected] ~]$ echo $0
-bash
[[email protected] ~]$ sudo rm /bin/bash
[[email protected] ~]$ bash
-bash: /bin/bash: No such file or directory
[[email protected] ~]$ sudo su -
su: /bin/bash: No such file or directory
[[email protected] ~]$ sudo cp /proc/$$/exe /bin/bash
[[email protected] ~]$ bash
[[email protected] ~]$ exit
[[email protected] ~]$ sudo su -
[[email protected] ~]# logout
[[email protected] ~]$
bash
es un shell, probablemente el shell de su sistema, por lo que ahora suceden cosas extrañas, mientras que partes del shell todavía están en la memoria. Una vez que cierre la sesión o reinicie, tendrá más problemas.
Entonces, lo primero debería ser cambiar su caparazón a algo seguro. Vea qué shells ha instalado
cat /etc/shells
Luego cambie su caparazón a uno de los otros caparazones enumerados allí, por ejemplo
chsh -s /bin/dash
Actualizar, porque ya reiniciaste:
Tienes suerte de que hoy en día el proceso de arranque no dependa de bash
, por lo que su sistema se inicia, simplemente no puede obtener una línea de comando. Pero puedes iniciar un editor para editar /etc/passwd
y cambie el shell en el root
línea desde /bin/bash
a /bin/dash
. Cerrar sesión y volver a iniciar sesión. Simplemente no haga ningún otro cambio en ese archivo, o puede estropear su sistema por completo.
Luego intente reinstalar bash
con
apt-get --reinstall install bash
Si todo salió bien, puedes chsh
volver a bash
.
Finalmente:creo que kali es una distribución altamente especializada, probablemente no adecuada para personas que sobrescriben accidentalmente su caparazón. Como esta oración fue llamada grosera y dura, debo agregar que la escribí a partir de mi propia experiencia. Cuando era más joven, arruiné mi sistema porque nadie me dijo que evitara jugar como root.
Si puede iniciar sesión, pero no puede abrir una terminal o acceder a un shell, pero puede acceder a los archivos a través de la GUI, vaya a /bin
, busque archivos cuyos nombres terminen con sh
(pero no .sh
) y ejecute uno (haciendo doble clic o clic derecho). En particular, busque lo siguiente:
sh
dash
ash
ksh
(oksh
seguido de un número; por ejemplo,ksh93
)zsh
yash
o, como último recurso,
tcsh
ocsh
Si puede ejecutar un shell, intente con la respuesta de Philippos.
Otro enfoque es iniciar en modo de usuario único siguiendo estas instrucciones pero especificando init=/bin/sh
(o uno de los otros shells) en lugar de init=/bin/bash
.