如何修复被诅咒的机器,其恢复模式和 GNOME 都坏了

如何修复被诅咒的机器,其恢复模式和 GNOME 都坏了

恢复模式显示一个屏幕,显然找不到 dpkg/apt/any coreutil 可执行文件:这里,使用正确密码登录尝试后,GNOME 崩溃,systemctl status gdm显示:

Nov 02 16:38:19 (system name) systemd[1]: Starting gdm.service - GNOME Display Manager...
Nov 02 16:38:20 (system name) systemd[1]: Starting gdm.service - GNOME Display Manager.
Nov 02 16:38:20 (system name) gdm-launch-environment] [1005]: pam_env(gdm-launch-environment:session): deprecated reading f user environment enabled
Nov 02 16:38:20 (system name) gdm-launch-environment] [1005]: pam_unix(gdm-launch-environment:session): session opened for user gdm(uid=120) by (uid=0)
Nov 02 16:38:27 (system name) gdm-password] [2135]: (red text)gkr-pam: unable to locate daemon control file(end red text)
Nov 02 16:38:27 (system name) gdm-password] [2135]: gkr-pam: stashed password to try later in open session
Nov 02 16:38:27 (system name) gdm-password] [2135]: pam_env(gdm-password:session): deprecated reading of user environment enabled
Nov 02 16:38:27 (system name) gdm-password] [2135]: pam_unix(gdm-password:session): session open for user (my username)(uid=1000) by (uid=0)
Nov 02 16:38:27 (system name) gdm-password] [2135]: gkr-pam: unlocked login keyring
Nov 02 16:38:27 (system name) gdm-password] [2135]: pam_unix(gdm-password:session): session closed for user (my username)
Nov 02 16:38:27 (system name) gdm3[989]: (bold text)Gdm: GdmDisplay: Session never registered, failing(end bold text)

coreutils 损坏,是指所有试图运行 coreutils 的脚本都失败了。如果我把它们输入出来,那就没问题了,否则就不行了。此外,bash(和 dash)无法识别内置命令(如 source 和 help),但可以识别可执行文件(如 ls 或 cd)。

另外,运行 startx 确实有效。

答案1

您所描述的行为表明您已经/bin/bash用另一个 shell 的副本或符号链接覆盖了该程序 - 最有可能的是/bin/dash(或/bin/sh,默认情况下它本身就是 的符号链接dash):

  • dash没有内置命令helpsource命令(后者是 POSIX.命令的 bash 同义词)

  • dash不支持 ksh 样式数组,例如

      $ sh -c 'items[c++]="resume"'
      sh: 1: items[c++]=resume: not found
    

要修复它,您可能需要重新安装 bash 包 - 我尝试它已经有一段时间了,但我相信sudo apt install --reinstall bash即使 bash 当前是 dash 也应该可以工作(该包的安装脚本调用 bash,但实际上并不使用任何非 POSIX 功能)。

可能发生这种情况的一种情况是,如果您尝试符号链接/bin/shbash而不是默认的dash,但是源和目标却错了。

相关内容