在我的 Arch Linux 安装上意外运行 sudo rm /*

在我的 Arch Linux 安装上意外运行 sudo rm /*

我不小心执行了sudo rm /*而不是sudo rm ./*在我想删除其内容的目录中,我基本上搞乱了我的系统。

ls等基本命令都不起作用grep,并且我的应用程序都没有打开,例如 chromium、slack、图像查看器等。

我尝试在互联网上查找我的问题并发现问题,但那里的解决方案都不适合我。

我使用的是 Arch Linux 桌面,自从发生这种情况以来我还没有注销我的系统,因为我担心我将无法按照建议重新登录这里。另外,我没有 Arch Linux 镜像文件的实时 USB,如果有帮助的话。

任何关于我应该如何进一步使我的系统恢复正常的帮助,将不胜感激。谢谢!

编辑:我附加了一些命令的输出:

$ echo /*

/boot /dev /etc /home /lost+found /mnt /opt /proc /root /run /srv /sys /tmp /usr /var
$ echo /usr/*

/usr/bin /usr/include /usr/lib /usr/lib32 /usr/lib64 /usr/local /usr/sbin /usr/share /usr/src

另外, echo /usr/bin/*还给了我一长串格式的目录,/usr/bin/{command}其中 {command} 是如果我没有搞乱系统的话我可以从终端运行的任何命令。

如果需要任何其他信息,请告诉我!

答案1

Arch Linux 在以下位置有四个符号链接/

  • bin -> usr/bin
  • lib -> usr/lib
  • lib64 -> usr/lib
  • sbin -> usr/bin

您应该能够重新创建它们(使用 Live-USB 或紧急 shell)或/直接调用链接器(具有 root 权限并在工作目录中):

/usr/lib/ld-linux-x86-64.so.2 /usr/bin/ln -s usr/lib lib64

这应该会恢复正在运行的系统的基本功能。然后恢复其他符号链接应该很容易。

如果您没有root权限,您可以重新启动进入恢复外壳并解决那里的问题。

为什么/usr/bin/ls其他命令会失败?

如果没有/lib64符号链接,动态链接的程序将找不到动态链接器/加载器,因为路径被硬编码为/lib64/ld-linux-x86-64.so.2(cf ldd /usr/bin/ln)。

答案2

更正您的 PATH 变量,使其仅指向现有目录

PATH=/usr/bin:/usr/sbin

然后重新创建符号链接,如 terdon 的回答所示。

然后尝试从另一个终端登录。

相关内容