关于更换sh出现的小插曲

之前我无意中看到fish的介绍,高度适应bash,自动补全,命令记忆,彩色输出。然后我就中毒了,不过在之前用过zsh,被zsh坑过几次后,坚决不想再设置zsh为root的默认sh,就怕哪天出错。
今天下午我也不知道那根筋搭错了,手贱把root的sh换成fish了:
chsh -s fish
用过linux的应该都多少了解过,这个chsh 后面要跟完整路径的,然而当时我就输入了密码!之后我就掉进了无边的深渊,只是那会我还没意识到,那会终端返回的提示是:
chsh: PAM: Authentication failure 
我当时想了没想,我估计是root密码输错了,于是重新输入,还是不对。那么只能先改密码了,在我改了两次密码都出现同样提示时,我知道这个问题有点严重了。
Google一查,有人提到fish要写全路径,而且还要在/etc/shells文件里。我试了一个遍,还是不行。
退出当前终端,试图重新sudo su/su root时,提示:
Cannot execute fih: No such file or directory
阿西巴,问题果然很严重。root进不去了!好在平时我常用tmux,找了一个session进入,果然还有残留的root!于是仔细查看所有环境变量:/etc/profile、/etc/bash.bashrc、
/root/.profile、/root/.bashrc、env、set,然而都没有发现问题。
Google继续搜索zsh的相关内容,总算看到/etc/passwd的相关描述。
root:x:0:0:root:/root:fish
原来chsh更改时,如果第一次出错了,那么那就以第一次出错为准了,之后的更改都没起效,即使输入正确的明令也没用。直接更改这一行就行:
root:x:0:0:root:/root:/usr/bin/fish
万事OK!



评论

此博客中的热门博文

严重的感冒

CBF190X

现象后的本质