N'éteignez pas votre ordinateur.
Avez-vous toujours un shell en cours d'exécution ? Est-ce que c'est bas ? Si oui, tout va bien. (Mais ne recommencez pas.)
Exécuter :
sudo cp /proc/$$/exe /bin/bash
Voilà, tout va bien.
Puisque quelqu'un dans les commentaires doute que cela fonctionne :
[[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
est un shell, probablement votre shell système, alors maintenant des choses étranges se produisent, alors que des parties du shell sont toujours en mémoire. Une fois déconnecté ou redémarré, vous aurez de plus gros problèmes.
Donc, la première chose à faire devrait être de changer votre shell pour quelque chose de sûr. Voir quels shells vous avez installés
cat /etc/shells
Ensuite, changez votre shell pour l'un des autres shells répertoriés ici, par exemple
chsh -s /bin/dash
Mettez à jour, car vous avez déjà redémarré :
Vous avez de la chance qu'aujourd'hui le processus de démarrage ne repose pas sur bash
, pour que votre système démarre, vous ne pouvez tout simplement pas obtenir de ligne de commande. Mais vous pouvez démarrer un éditeur pour modifier /etc/passwd
et changer le shell dans le root
ligne de /bin/bash
à /bin/dash
. Déconnectez-vous et reconnectez-vous. N'apportez simplement aucune autre modification à ce fichier, ou vous risquez de gâcher complètement votre système.
Essayez ensuite de réinstaller bash
avec
apt-get --reinstall install bash
Si tout a réussi, vous pouvez chsh
retour à bash
.
Enfin :je pense que kali est une distribution hautement spécialisée, probablement pas adaptée aux personnes qui écrasent accidentellement leur shell. Comme cette phrase a été qualifiée de grossière et dure, je dois ajouter que je l'ai écrite à partir de ma propre expérience. Quand j'étais plus jeune, j'ai ruiné mon système parce que personne ne m'a dit d'éviter de déconner en tant que root.
Si vous pouvez vous connecter, mais que vous ne pouvez pas ouvrir un terminal ou accéder à un shell, mais que vous pouvez accéder aux fichiers via l'interface graphique, accédez à /bin
,recherchez les fichiers dont le nom se termine par sh
(mais pas .sh
) et exécutez-en un (en double-cliquant ou en cliquant avec le bouton droit). En particulier, recherchez les éléments suivants :
sh
dash
ash
ksh
(ouksh
suivi d'un nombre ; par exemple,ksh93
)zsh
yash
ou, en dernier recours,
tcsh
oucsh
Si vous pouvez faire fonctionner un shell, essayez la réponse de Philippos.
Une autre approche consiste à démarrer en mode mono-utilisateur en suivant ces instructions mais en spécifiant init=/bin/sh
(ou l'un des autres shells) au lieu de init=/bin/bash
.