chsh命令_Linux chsh命令:查看和修改当前登录的Shell

转载自:http://c.biancheng.net/linux/chsh.html#:~:text=%E4%BD%BF%E7%94%A8%20chsh%20%E5%91%BD%E4%BB%A4%E7%9A%84%20-s%20%E9%80%89%E9%A1%B9%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BF%AE%E6%94%B9%E7%99%BB%E5%BD%95%E7%9A%84%20Shell%20%E4%BA%86%E3%80%82%20%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E8%BF%99%E6%97%B6%E5%80%99%E6%BB%A1%E6%80%80%E6%AC%A3%E5%96%9C%E5%9C%B0%E6%89%A7%E8%A1%8C,%E8%BF%99%E6%98%AF%E5%9B%A0%E4%B8%BA%20chsh%20%E6%94%B9%E5%8F%98%E7%9A%84%E6%98%AF%E6%88%91%E4%BB%AC%E7%99%BB%E5%BD%95%20Shell%20%E7%9A%84%E9%85%8D%E7%BD%AE%EF%BC%8C%E6%88%91%E4%BB%AC%E5%BF%85%E9%A1%BB%E9%80%80%E5%87%BA%E5%86%8D%E9%87%8D%E6%96%B0%E7%99%BB%E5%BD%95%20Shell%EF%BC%8C%E6%89%8D%E5%8F%AF%E4%BB%A5%E5%AE%8C%E5%85%A8%E6%8A%95%E5%85%A5%E5%88%B0%20zsh%20%E7%9A%84%E6%80%80%E6%8A%B1%E3%80%82

 

chsh 命令本身并不复杂,它的功能比较单一,就是负责查看(显示)和修改我们系统的登录 Shell。想修改登录 Shell,首先要知道我们的系统安装了哪些 Shell。这里有两种方法可以查看。

方法一:

[roc@roclinux ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

方法二:
[roc@roclinux ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

其实chsh -l命令本质上也是去查看 /etc/shells 文件。

查看当前正在使用的 Shell

使用一个环境变量,就可以查看到当前正在使用的 Shell 啦:
[roc@roclinux ~]$ echo $SHELL
/bin/bash
注意:SHELL一定要大写。可以看到,我们目前使用的 Shell 是 bash。

听说 zsh 不错,于是我们就通过在命令行执行 zsh 命令切换到了 zsh 环境。可是,为什么查看当前 Shell 类型仍然是 /bin/bash 呢?
[roc@roclinux ~]$ zsh
[roc@roclinux]~% echo $SHELL
/bin/bash
[roc@roclinux]~%

请注意,我们虽然执行了 zsh,但是所谓“当前的 Shell”是一个大环境的概念,是针对一个已登录的用户而言的。而我们执行 zsh 只是启动了一个 zsh 的解释器程序而已,并没有改变大环境。如果想改变“当前的 Shell”,那么还是要求助于 chsh 才可以。

将 Shell 环境真正切换到 zsh

[roc@roclinux ~]$ chsh -s /bin/zsh
Changing shell for roc.
Password:
Shell changed.
使用 chsh 命令的-s选项就可以修改登录的 Shell 了。

如果我们这时候满怀欣喜地执行 echo $SHELL,就会发现然输出的仍是 /bin/bash。这是因为 chsh 改变的是我们登录 Shell 的配置,我们必须退出再重新登录 Shell,才可以完全投入到 zsh 的怀抱。

真是一波三折,退出并重新登录后,终于看到了我们想要的 /bin/zsh 了:
[roc@roclinux]~% echo $SHELL
/bin/zsh

chsh -s 到底修改了哪里

chsh -s其实修改的就是 /etc/passwd 文件中和我们所登录的用户名相对应的那一行。现在我们来查看一下:
[roc@roclinux]~% cat /etc/passwd|grep ^roc
roc:x:1001:1001::/home/roc:/bin/zsh

可以发现,输出内容的最后部分已经变成了 /bin/zsh 了。重启系统的时候,Linux 就会读取这一命令来启动新的 Shell。

好了,我们要恢复正常的工作环境,把 Shell 修改回我们熟悉的 /bin/bash 了:
[roc@roclinux]~% chsh -s /bin/bash
Changing Shell for roc.
Password:
Shell changed. 

posted @ 2022-05-29 22:33  呦呦南山  阅读(1306)  评论(0编辑  收藏  举报