更改默认 shell
大多数现代发行版都预装了 BASH( B ourne A gain SH ell)并配置为默认 shell。
负责在 Linux 中更改 shell 的命令(实际上是可执行二进制文件,ELF)是 chsh
( ch ange sh ell)。
我们可以首先使用 chsh -l
命令检查我们的机器上已经安装和配置了哪些 shell,这将输出类似于以下内容的结果:
[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
在某些 Linux 发行版中,chsh -l
无效。在这种情况下,可以在/ etc / shells 文件中找到所有可用 shell 的列表。你可以使用 cat
显示文件内容:
[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
现在我们可以选择新的默认 shell,例如 fish
,并使用 chsh -s
进行配置,
[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password:
Shell changed.
现在剩下要做的就是执行注销登录周期,并享受我们新的默认 shell。
如果你希望更改其他用户的默认 shell,并且你拥有该计算机的管理权限,则可以使用 chsh
作为 root
来实现此目的。因此,假设我们想要将 user_2
的默认 shell 更改为 fish,我们将使用与之前相同的命令,但添加了其他用户的用户名 chsh -s /usr/bin/fish user_2
。
为了检查当前的默认 shell 是什么,我们可以查看 $SHELL
环境变量,它指向我们默认 shell 的路径,所以在我们更改之后,我们希望得到与此类似的结果,
~ echo $SHELL
/usr/bin/fish
chsh
选项:
-s shell
将 shell 设置为登录 shell。
-l
,--list-shells
打印/ etc / shells 中列出的 shell 列表并退出。
-h
,--help
打印用法消息并退出。
-v
,--version
打印版本信息并退出。