Linux 上的 Zsh shell 安装和配置Linux 上的 Zsh shell 安装和配置Linux 上的 Zsh shell 安装和配置Linux 上的 Zsh shell 安装和配置
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 上的 Zsh shell 安装和配置

发表 admin at 2025年2月28日
类别
  • 未分类
标签

Z-shell (zsh) 是一种现代且非常强大的 shell:它合并并扩展了其他 shell(例如 Bash)的许多功能。虽然它可以用作强大的脚本语言,但它主要针对交互使用,因为其更突出的功能之一是高级选项卡完成系统。在本教程中,我们将了解如何在最常用的 Linux 发行版中安装 zsh,了解其启动和关闭文件是什么以及如何执行基本配置。

在本教程中您将学习:

  • 如何在最常用的 Linux 发行版上安装 Zsh

  • 交互式、非交互式、登录和非登录 shell 之间有什么区别

  • Z-shell 启动和关闭文件是什么以及在什么上下文中调用它们

  • 如何执行基本的 shell 配置

  • 使用 zsh 时如何设置 PATH

  • 如何将 zsh 设置为默认 shell

使用的软件要求和约定

安装 Zsh

执行 Zsh 的安装是一项非常简单的任务,因为它可以在最常用的 Linux 发行版的官方存储库中找到。要在 Debian 或基于它的众多系统之一上安装该软件包,我们应该运行:

$ sudo apt-get update && sudo apt-get install zsh

要在 Fedora 上执行安装,我们将使用 dnf 包管理器:

$ sudo dnf install zsh

在 Archlinux 上,我们使用 pacman 来安装软件包:

$ sudo pacman -Sy zsh

几秒钟后 zsh 就应该安装完毕。在开始讨论如何配置之前,让我们花点时间回顾一下我们可以使用的不同“类型”的 shell 之间的区别;这将有助于我们理解zsh启动文件的作用。

贝壳类型

我们基本上可以区分以下几种shell类型:

  • 交互的

  • 非交互式

  • 登录

  • 未登录

顾名思义,交互式 shell 是我们启动终端仿真器时通常使用的:它的输入和错误输出连接到所述终端。相反,非交互式 shell 不接受用户输入。例如,当从脚本内部启动命令时,将使用非交互式 shell。

我们进一步区分的是登录 shell 和非登录 shell。当我们通过 TTY 或 ssh 登录系统时,将调用登录 shell。在这种情况下,我们正在交互式登录外壳中工作。相反,非登录 shell 是我们登录系统后使用的任何其他类型的 shell(除非显式调用登录 shell)。

掌握上述区别将有助于我们更好地理解 zsh 启动文件是在什么上下文中使用的。让我们看看它们是什么。

Zsh 启动和关闭文件

系统范围的zsh启动文件如下:

  • /etc/zshenv

  • /etc/zprofile

  • /etc/zlogin

  • /etc/zshrc

  • /etc/zlogout

上述每个文件都有其针对每个用户的等效文件。用户级配置文件位于设置为 ZDOTDIR 变量值的目录路径中。如果此变量的值为空字符串,则假定文件位于用户 HOME 目录中。每个用户配置文件名以 . 开头,因此它们是隐藏的(点文件):

  • .zshenv

  • .z配置文件

  • .zlogin

  • .zshrc

  • .zlogout

/etc/zshenv 和 .zshenv 配置文件用于定义环境变量。每次启动 zsh 会话时总是调用它们,因此它们应该包含尽可能少的内容。只有不产生输出的命令才应写入这些文件中。

/etc/zprofile 和 .zprofile 启动文件在登录 shell 会话启动时被读取,可用于运行命令进行设置那个特定的上下文。使用交互式 shell 时,它们在 /etc/zshrc 和 .zshrc 之前执行。

/etc/zlogin 和 .zlogin 文件也会在 login shell 会话启动时调用。然而,当使用交互式 shell 时,它们在 /etc/zshrc 和 /.zshrc 之后执行。虽然它们可以与“配置文件”文件一起使用,但应将其视为它们的替代方案。

/etc/zshrc 和 .zshrc 文件在交互式 shell 会话启动时被调用。它们基本上是 BASH shell 的 /etc/bashrc 和 ~/.bashrc 文件的对应部分。

最后,/etc/zlogout 和 .zlogout 文件在登录 shell 会话关闭时运行。后者在前者之前运行。

系统范围的配置文件先于用户专用的对应文件读取,因此以下是读取配置文件的全局顺序。使用交互式非登录 shell 会话时:

  1. /etc/zshenv

  2. 〜/.zshenv

  3. /etc/zshrc

  4. 〜/.zshrc

使用交互式登录 shell 会话时:

  1. /etc/zshenv

  2. 〜/.zshenv

  3. /etc/zprofile

  4. 〜/.zprofile

  5. /etc/zshrc

  6. 〜/.zshrc

  7. /etc/zlogin

  8. 〜/.zlogin

  9. 〜/.zlgout

  10. /etc/zlogout

使用非交互式、非登录 shell 会话时(例如,从脚本启动命令时):

  1. /etc/zshenv

  2. 〜/.zshenv

首先zsh配置

第一次启动交互式 zsh shell 会话(例如在终端中运行 zsh)时,如果我们的用户不存在配置文件,则 zsh-newuser-install脚本已启动。它旨在帮助我们创建第一个设置:

正如我们所看到的,要继续,我们只需按 (1) 即可。如果我们决定这样做,系统将提示我们选择要配置 shell 的哪个方面:

我的建议是继续进行基本设置,而不是检查启动文件中生成的内容,以便更好地了解底层的工作原理。完成此操作后,我们可以随时进一步调整,例如查看存储在 github 或类似网站上的其他用户配置文件。

配置历史记录

要配置如何处理历史记录,我们将在显示上述菜单时按(1)。这将引导我们进入以下屏幕:

显示三个环境变量的值。我们在之前的教程中讨论了如何配置 bash 历史记录,因此这些变量对我们来说应该很熟悉。第一个HISTSIZE包含内存中保存的历史行数,第二个HISTFILE用于在中定义> shell 会话关闭时保存哪些文件历史记录。最后,第三个值SAVEHIST是历史文件中要保留的行数。

要编辑这些值之一,我们所要做的就是按相应的键。例如,要更改 HISTSIZE,我们可以按 (1)。系统将提示我们插入所需的值:

设置不会永久保存,直到我们返回主菜单(0)并选择(0)退出,保存新设置...再次。

配置路径

众所周知,PATH 环境变量包含默认搜索程序和可执行文件的目录列表,因此无需指定绝对路径即可启动它们。使用 Bash 时将目录添加到 PATH 的方法是在 ~/.bash_profile 文件中列出它们,并用 : 字符分隔。例如,要将 ~/.local/bin 目录添加到我们的 PATH 中,我们将编写:

export PATH="$HOME/.local/bin:$PATH"

使用 zsh 时,我们以不同的方式定义 PATH。应包含的目录是使用 ~/.zshenv 文件中的数组指定的。要执行与上一个示例中相同的操作,我们将编写:

path=("$HOME/.local/bin" $path)

使用上述配置会出现问题,因为每次调用 .zshenv 文件 $ {HOME}/.local/bin 都会添加到数组中,其中将包含许多重复项。为了解决这个问题,我们必须在数组声明之前使用以下行:

typeset -U path

typeset -U path 行的作用只是避免数组内出现重复项。如果另一个元素已经存在,则最左边元素将保留在数组中。想象一下该数组包含以下目录(当我们使用 zsh 时,请注意提示中的 % 符号):

% echo $path
/home/egdoc/.local/bin /home/egdoc/bin /usr/local/bin

如果我们再次将 /usr/local/bin 元素添加到数组的开头,则old 出现的位置将被删除:

% typeset -U path
% path=(/usr/local/bin $path)
% echo $path
/usr/local/bin /home/egdoc/.local/bin /home/egdoc/bin

使用 zsh 作为默认 shell

要更改用户的默认登录 shell,我们使用 chsh 命令。我们使用 -s (--shell) 选项调用它,并传递我们想要用作参数的 shell 的路径。在我们的例子中,我们希望将 /bin/zsh 设置为默认 shell,因此我们运行:

$ chsh -s /usr/bin/zsh

结论

在本教程中,我们学习了 zsh 的基础知识,这是一种现代 shell,具有许多功能,例如高级制表符补全。我们了解了如何在最常用的 Linux 发行版上安装它、zsh 启动文件是什么以及在什么上下文中调用它们、如何执行基本的 shell 配置、如何使用 zsh 设置 PATH,以及最后如何设置 zsh作为默认登录 shell。

©2015-2025 Norria support@alaica.com