更改默认 shell

大多数现代发行版都预装了 BASH( B ourne A gain SH ell)并配置为默认 shell。

负责在 Linux 中更改 shell 的命令(实际上是可执行二进制文件,ELF)是 chshch 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

打印版本信息并退出。