マシンをシャットダウンしないでください。
まだ実行中のシェルがありますか?バッシュですか?もしそうなら、あなたは大丈夫です。 (ただし、これを繰り返さないでください。)
実行:
sudo cp /proc/$$/exe /bin/bash
ほら、すべて順調です。
コメントの誰かがこれが機能することを疑っているので:
[[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
シェル、おそらくシステムシェルであるため、シェルの一部がまだメモリにある間に奇妙なことが起こります。ログアウトまたは再起動すると、さらに深刻な問題が発生します。
したがって、最初にシェルを安全なものに変更する必要があります。インストールしたシェルを見る
cat /etc/shells
次に、シェルをそこにリストされている他のシェルのいずれかに変更します。たとえば、
chsh -s /bin/dash
再起動したので更新:
幸運なことに、最近では起動プロセスが bash
に依存していません。 、システムが起動するので、コマンドラインを取得できません。ただし、エディタを起動して /etc/passwd
を編集することはできます root
のシェルを変更します /bin/bash
の行 /bin/dash
まで .ログアウトして、再度ログインします。そのファイルに他の変更を加えないでください。そうしないと、システムが完全に台無しになる可能性があります。
bash
を再インストールしてみてください と
apt-get --reinstall install bash
すべてが成功したら chsh
できます bash
に戻る .
最後に:kali は高度に専門化されたディストリビューションであり、誤ってシェルを上書きしてしまう人にはおそらく適していないと思います。 この文は失礼で厳しいと呼ばれていたので、私は自分の経験から書いたことを付け加えておきます.私が若い頃、ルートとしていじるのを避けるように誰も私に言わなかったので、私はシステムを台無しにしました.
ログインはできるが、ターミナルを開いたりシェルにアクセスしたりできないが、GUI からファイルにアクセスできる場合は、/bin
に進みます。 、名前が sh
で終わるファイルを探します (ただし、.sh
ではありません) ) 1 つを実行します (ダブルクリックまたは右クリック)。特に、以下を探してください:
sh
dash
ash
ksh
(またはksh
数字が続きます。例:ksh93
)zsh
yash
または、最後の手段として、
tcsh
またはcsh
シェルを実行できる場合は、Philippos の回答を試してください。
もう 1 つの方法は、次の手順に従ってシングル ユーザー モードで起動することですが、init=/bin/sh
を指定します。 (または他のシェルのいずれか) init=/bin/bash
の代わりに .