如何通知系统的其余部分我的 shell 已从 zsh 更改为 bash?

如何通知系统的其余部分我的 shell 已从 zsh 更改为 bash?

我安装是zsh因为我认为我可能更喜欢它bash。我没有,为了恢复它,我已经使用了chsh -s /bin/bash,正如我自己所给出的You may not change the shell for 'cat'.

我还改变了我的线路/etc/passwd

cat:x:1000:1000:cat,,,:/home/cat:/bin/zsh

cat:x:1000:1000:cat,,,:/home/cat:/usr/bin/bash

(因为which bash给了/usr/bin/bash)。

GNOME 终端、xterm术语等现在都同意我的 shell 是bash

但是,当我按 进入虚拟终端时Ctrl Alt Nn数字键在哪里,并尝试以我自己的身份登录,例如

Ubuntu 15.10 mint-kitty ttyN

mint-kitty login: cat
Password:


/bin/zsh: no such file or directory 
exit

出现,然后我就注销了。

我可以很好地登录图形会话。 (MDM + 肉桂。)

据我所知,用户的登录 shell 是由/etc/passwd.没有提及zshin.bashrc.profile,也没有提及 in /etc/profile

如何让系统的其余部分知道我的 shell 不存在zsh

答案1

chsh命令仅允许您从列出的 shell 更改登录 shell/etc/shells,到 中列出的 shell /etc/shells。这是一项安全保障功能:如果帐户具有受限制的 shell(未在 中列出/etc/shells),则他们无法通过切换到另一个 shell 来升级其访问权限;用户无法通过切换到他们无法更改的 shell 来锁定自己。 root 用户当然不受此限制。

检查/etc/shells不考虑命名文件的替代方法,例如符号链接。如果/etc/shells列出/bin/bash,则用户数据库中的条目必须是/bin/bash,而不是/bin/./bash(这是同一个文件)或/usr/bin/bash(即使这是到 的符号链接/bin/bash)。

如果您要离开 shell,则需要chsh在卸载旧 shell 之前运行切换回来,因为卸载会将 shell 从/etc/shells.

我建议将您的 shell 改回/bin/bash;你需要以 root 身份执行此操作。这样你chsh以后就可以再次跑步了。

在 Linux 下,对于本地帐户, 中的条目/etc/passwd决定了用户的登录 shell。 (对于其他一些 Unix 变体而言,情况并非如此,其中存在/etc/passwd是为了兼容性,但不是实际参考,因此要么/etc/passwd不得修改,要么在修改后必须调用某些同步命令。)

我无法解释对何处的引用/bin/zsh挥之不去。确保 中没有杂散的额外条目/etc/passwd

相关内容