尝试将 shell 脚本改回 bash 后终端立即关闭

尝试将 shell 脚本改回 bash 后终端立即关闭

我在 Ubuntu 上玩 fish shell,但想切换回 bash。我尝试运行

chsh -s /bin/bash

但那没用,我得到了一些错误,如果我没记错的话,这是关于权限的错误,所以我尝试这样做

sudo chsh -s /bin/bash 

这似乎有效,没有显示任何错误。所以我继续尝试注销并重新登录以查看此更改的效果。但从那时起,每次我尝试打开终端时,它都会立即关闭。

有人知道我做错了什么吗?

答案1

我自己设法解决了这个问题。请允许我解释一下:

我使用 ctrl + alt + F1 进入虚拟控制台,然后尝试登录,但出现了同样的问题,我快速弹出一条消息,然后又回到虚拟控制台的登录阶段。消息传递得太快了,但我设法用相机拍下了它。

事实证明这是 fish shell 的一个错误:(不太确定我是如何导致这个错误的)

fish: relocation error: fish: symbol _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

所以这告诉我 fish shell 仍然是我的默认 shell 脚本,sudo chsh -s /bin/bash对我来说没用。我通过检查进一步确认了这一点,/etc/passwd发现我的用户仍然有/usr/bin/fishfish 不知何故被破坏了,导致终端立即关闭。终于找到了问题的根源!

然后我按照此处的说明,以 root 身份从 grub 运行 bash 来编辑我的 passwd 文件:https://unix.stackexchange.com/a/282141/212011我只需找到我的用户名并改/usr/bin/bash回来/bin/bash,然后一切就都好了!

相关内容