Non spegnere la tua macchina.
Hai ancora una shell funzionante? È bash? Se è così, stai bene. (Ma non farlo di nuovo.)
Esegui:
sudo cp /proc/$$/exe /bin/bash
Voilà, va tutto bene.
Poiché qualcuno nei commenti dubita che funzioni:
[[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
è una shell, probabilmente la tua shell di sistema, quindi ora accadono cose strane, mentre parti della shell sono ancora in memoria. Dopo esserti disconnesso o riavviato, ti ritroverai in guai peggiori.
Quindi la prima cosa dovrebbe essere cambiare la tua shell in qualcosa di sicuro. Guarda quali shell hai installato
cat /etc/shells
Quindi cambia la tua shell con una delle altre shell elencate qui, per esempio
chsh -s /bin/dash
Aggiorna, perché hai già riavviato:
Sei fortunato che al giorno d'oggi il processo di avvio non si basi su bash
, quindi il tuo sistema si avvia, non puoi semplicemente ottenere una riga di comando. Ma puoi avviare un editor per modificare /etc/passwd
e cambia la shell nel root
linea da /bin/bash
a /bin/dash
. Esci e accedi di nuovo. Basta non apportare nessun'altra modifica a quel file, o potresti rovinare completamente il tuo sistema.
Quindi prova a reinstallare bash
con
apt-get --reinstall install bash
Se tutto è andato a buon fine puoi chsh
torna a bash
.
Infine:penso che kali sia una distribuzione altamente specializzata, probabilmente non adatta a persone che sovrascrivono accidentalmente la loro shell. Poiché questa frase è stata definita maleducata e dura, dovrei aggiungere che l'ho scritta sulla base della mia esperienza. Quando ero più giovane, ho rovinato il mio sistema perché nessuno mi ha detto di evitare di scherzare come root.
Se puoi accedere, ma non puoi aprire un terminale o altrimenti accedere a una shell, ma puoi accedere ai file tramite la GUI, vai a /bin
, cerca i file i cui nomi terminano con sh
(ma non .sh
) ed eseguirne uno (facendo doppio clic o facendo clic con il pulsante destro del mouse). In particolare, cerca quanto segue:
sh
dash
ash
ksh
(oksh
seguito da un numero; ad esempio,ksh93
)zsh
yash
o, come ultima risorsa,
tcsh
ocsh
Se riesci a far funzionare una shell, prova la risposta di Philippos.
Un altro approccio è avviare in modalità utente singolo seguendo queste istruzioni, ma specificando init=/bin/sh
(o una delle altre shell) invece di init=/bin/bash
.