chsh命令_Linux chsh命令:查看和修改当前登录的Shell
chsh 命令本身并不复杂,它的功能比较单一,就是负责查看(显示)和修改我们系统的登录 Shell。想修改登录 Shell,首先要知道我们的系统安装了哪些 Shell。这里有两种方法可以查看。
方法一:
方法二:
其实
听说 zsh 不错,于是我们就通过在命令行执行 zsh 命令切换到了 zsh 环境。可是,为什么查看当前 Shell 类型仍然是 /bin/bash 呢?
请注意,我们虽然执行了 zsh,但是所谓“当前的 Shell”是一个大环境的概念,是针对一个已登录的用户而言的。而我们执行 zsh 只是启动了一个 zsh 的解释器程序而已,并没有改变大环境。如果想改变“当前的 Shell”,那么还是要求助于 chsh 才可以。
如果我们这时候满怀欣喜地执行 echo $SHELL,就会发现然输出的仍是 /bin/bash。这是因为 chsh 改变的是我们登录 Shell 的配置,我们必须退出再重新登录 Shell,才可以完全投入到 zsh 的怀抱。
真是一波三折,退出并重新登录后,终于看到了我们想要的 /bin/zsh 了:
可以发现,输出内容的最后部分已经变成了 /bin/zsh 了。重启系统的时候,Linux 就会读取这一命令来启动新的 Shell。
好了,我们要恢复正常的工作环境,把 Shell 修改回我们熟悉的 /bin/bash 了:
方法一:
[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.
编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。
通俗易懂,深入浅出,一篇文章只讲一个知识点。
文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。
文章不涉及代码,不烧脑细胞,人人都可以学习。
当你决定关注「编程帮」,你已然超越了90%的程序员!

微信扫描二维码关注
所有教程
- 设计模式
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算
- 编程笔记
- 资源下载
- VIP视频
- 一对一答疑
- 关于我们