如何使用 chsh 更改 Linux 上的默认 Shell

shell 是一个程序,它充当操作系统的最外层,您可以通过它与各种程序和服务进行交互。大多数 Linux 发行版使用 bash 作为它们的默认 shell。但是,如果您愿意,您可以自由地为您的系统选择另一个 shell。

除了 bash,Linux 还支持其他 shell 程序,例如 ksh、zsh、csh 和 fish。这些 shell 中的每一个都有一些独特的特性,使它们与 bash 和其他 shell 区分开来。

让我们深入了解有关 shell 以及如何更改默认 Linux shell 的更多信息。

什么是壳,它的意义是什么?

shell 是一种计算机程序,它允许您使用命令来控制操作系统的各种元素。当您在 Linux 中使用终端时,您基本上与位于您和操作系统之间的 shell 交互并指示它执行命令。

大多数 Linux shell 都带有命令行界面 (CLI),需要熟悉命令(及其语法)。当您向 shell 输入命令时,它会在系统路径中查找程序(在您的命令中)以确定它。如果找到匹配项,则它会成功执行命令,然后您将获得输出。

简而言之,shell 提供了一种强大而有效的与操作系统通信的方式。

相关:通过 GUI 选择 Linux 终端的 5 个理由

为什么要更改默认 Shell?

一般来说,您在 Linux 或任何其他基于 Unix 的系统上遇到的大多数 shell 提供的大部分功能几乎相同:它们让您可以方便地与各种系统元素进行交互/控制。

预装在大多数 Linux 发行版中的Bash就是一个完美的例子。然而,当与其他一些 shell 堆叠时,例如 zsh,它在功能方面落后。

另一方面,Zsh 带来了一系列附加功能,例如自动完成、自动更正、自动 cd、递归路径扩展和插件支持,这使其比 bash 和其他一些 shell 更具优势。

当然,这些只是您使用 zsh 获得的一小部分优势。其他 shell 也带来了自己的一组功能和增强功能,这使得使用它们的整个体验更轻松、更方便。

如何更改默认的 Linux Shell

有多种方法可以更改 Linux 中的默认 shell。我们将在本指南中使用chsh实用程序演示该过程,因为它是一种更可靠、更方便的方法。

Chsh 是基于 Unix 的操作系统上的命令行实用程序,可让您更改默认 shell。它几乎预装在所有 Linux 发行版上。

要使用它,您所要做的就是提供要在终端中使用的 shell 的路径名,它会自行处理其余的过程。但是,您需要先完成几个步骤,然后才能更改默认 shell。

以下是这些步骤的细分。

步骤 1:识别已安装的 Shell

在安装新 shell 之前,了解 Linux 系统上已有哪些 shell 很重要。为此,请打开终端并键入:

 cat /etc/shells

除非您安装了新的 shell,否则您的输出应该类似于下图所示的输出。

步骤 2:安装新外壳

一旦您确定了系统上已安装的 shell,下一步就是安装一个新的 shell。在这方面,Linux 上有多种可用选项,每种选项都有其优点和缺点。因此,根据您的偏好以及您希望使用 shell 实现的目标,您可以选择一个满足您要求的。

本指南将演示 zsh shell 的安装和设置。在后面的命令中随意将“zsh”替换为您的 shell 名称。

在基于 Debian 的发行版上安装 zsh:

 sudo apt install zsh

你可以使用 pacman 在 Arch Linux 上安装 zsh:

 sudo pacman -Syu zsh

在 Fedora、CentOS 和其他 RHEL 发行版上安装 zsh 也很容易:

 sudo dnf install zsh

安装完成后,运行以下命令再次检查系统上已安装的 shell:

 cat /etc/shells

接下来,验证安装的 shell 是否有效。为此,请在终端中输入 shell 的名称。如果是 zsh,请运行:

 zsh

要返回默认 shell,请键入exit并按Enter

步骤 3:将 Shell 设置为系统的默认 Shell

如果您新安装的 shell 出现在已安装的 shell 列表中并且工作正常,那么您现在可以将其设置为系统的默认 shell。请注意,使用 chsh,您可以更改默认交互式 shell 和默认登录 shell。

登录 shell 是您在登录系统后获取终端的 shell,而交互式 shell 在您登录后始终可用。

要将 zsh(或任何其他 shell)设置为默认登录 shell,请打开终端并运行:

 chsh

当提示输入密码时,输入您的帐户密码并按Enter 键

接下来,键入已安装 shell 的绝对路径。这将更改您系统的默认登录 shell。要将默认的交互式 shell 更改为 zsh:

 chsh -s /usr/bin/zsh

系统将要求您输入密码以应用更改。输入您的密码并按Enter 键

将 zsh(或其他 shell)设置为默认或/和交互式 shell 后,请注销并重新登录以使更改反映在您的系统上。

现在,当您再次登录并打开终端时,系统将使用 shell 配置器向您致意。在开始使用新 shell 之前,您必须在此处选择与您的 shell 要求相对应的选项。

设置好所有内容后,验证您新安装的 shell 是否设置为系统的默认 shell。为此,请运行以下命令:

 echo $SHELL

如果您已将其设置为 zsh,您将在终端中看到它的路径。如果是另一个 shell,它应该相应地反映路径。

请注意,如果您想更改系统上其他用户的默认 shell,则必须为每个用户单独执行此操作。例如,如果您想更改用户sam的默认 shell,则需要运行以下命令:

 sudo chsh -s /usr/bin/zsh sam

更改默认外壳以获得个性化体验

功能丰富的外壳除了默认外壳固有的优点外,还具有许多额外的好处。由于大多数 Linux 交互和操作都是通过命令行进行的,因此将默认 shell 更改为提供更多功能的 shell 是个性化工作环境的第一步。

事实上,您不仅应该考虑更改默认 shell,还应该考虑自定义它并按照您希望的方式设置它以提升整个体验。开始自定义 shell 的一个好地方是开始使用命令行别名,这样可以快速方便地在终端中输入命令。