# chsh - 用来更换登录系统时使用的shell
chsh命令 用来更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。
改变用户登录时使用的shell,默认使用bash。如果命令行上没有给出shell,chsh将提示输入一个shell。chsh将接受系统上任何可执行文件的完整路径名。但是,如果shell未在“/etc/shell”文件中列出,则将发出警告。另一方面,也可以将其配置为只接受此文件中列出的shell,除非您是root用户。
# 适用范围
RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux
# 语法
chsh [选项] user
# 选项
-s, --shell # 改变登录后使用的shell环境
-l, --list-shells # 显示系统当前可以用的shell
-u, --help # 显示帮助文档
-v, --version # 显示命令版本信息
# 举例
查看可用的shell
[sogrey@bogon 文档]$ chsh -l david #显示当可用shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
改变用户shell
[sogrey@bogon 文档]$ chsh -s /bin/sh david #改变登录shell
Changing shell for david.
Shell changed.
[sogrey@bogon 文档]$ su david #切换用户,shell已经改
sh-4.1$
把我的shell改成zsh
[sogrey@bogon 文档]$ chsh -s /bin/zsh
Changing shell for rocrocket.
Password:
Shell changed.
[sogrey@bogon 文档]$
使用chsh加选项-s就可以修改登录的shell了!你会发现你现在执行echo $SHELL后仍然输出为/bin/bash,这是因为你需要重启你的shell才完全投入到zsh怀抱中去。chsh -s其实修改的就是/etc/passwd文件里和你的用户名相对应的那一行。
把shell修改回/bin/bash
[sogrey@bogon 文档]$ chsh -s /bin/bash
Changing shell for rocrocket.
Password:
Shell changed.