我覆盖了 /bin/sh 如何恢复它?

riz*_*en1 -1 shell

我是 Linux 新手,以为/bin/sh是一个文件夹。

我做到了mv path/to/file /bin/sh,现在我无法再打开终端和 Ubuntu 软件了。可能还有更多损坏的程序我还没有注意到。

我收到错误:

无法生成子进程/bin/sh符号链接层数过多

有什么建议吗?

我正在运行 Ubuntu 20.04

gol*_*cks 7

/bin/sh 是一个符号链接,覆盖实际上并没有删除任何东西,它只是使链接无效。

这是一个问题,因为/bin/sh在 shebang 标头中使用了各种脚本。这可能就是各种随机事物也失败的原因。

您需要以 root 身份或通过 sudo: 1

cd /bin 
rm sh 
ln -s dash sh 
Run Code Online (Sandbox Code Playgroud)

希望它的含义足够清楚,因为根据您发现使用绝对路径执行此操作的机制可能更容易(原始链接可能没有使用绝对路径,但这应该无关紧要)。如果您不熟悉(符号)文件链接,请参阅man ln

这应该允许您再次正常使用终端。如果它有效,您可能希望重新启动,以防之前任何失败的脚本产生持续的后果。

  1. 这是 Debian/Ubuntu 和家庭特定的;其他发行版可能不包含dash外壳,而是符号链接到bash. 如果没有dashin /bin,请使用bash