Zsh

一款极其强大的 Shell,原生支持极强的路径补全、拼写纠错和高度可定制的提示符。

#status / growing #type / concept #tech / ops #resource / zsh #media / website

Zsh

一句话定义

Zsh(Z Shell)是一个兼容 Bash 的 Unix 命令行 Shell,以强大的自动补全、拼写纠错、主题系统和插件生态著称,是 macOS 的默认 Shell。

核心机制 / 工作原理

Zsh 是 Bourne Shell(sh)家族的扩展,继承了 Bash 的绝大部分语法,同时在交互体验上做了大量增强。它通过模块化系统(zshmodules)加载功能,核心引擎处理命令解析,而补全、高亮、提示符等功能由独立模块提供。

Zsh 相比 Bash 的关键增强

补全系统

  • Tab 补全:支持命令、路径、选项、参数的智能补全,可补全 git 分支名、ssh 主机名、kill 进程名等。
  • 菜单选择:按 Tab 后出现可交互的选择列表,用方向键导航。
  • 模糊匹配:输入 cd /u/l/b 可补全为 cd /usr/local/bin

Globbing 与通配符

  • **/*.js — 递归匹配所有 JS 文件
  • *(.) — 只匹配文件(不包括目录)
  • *(m-7) — 匹配 7 天内修改过的文件

提示符(Prompt)

  • 支持右提示符(RPROMPT),左侧输入命令,右侧显示 git 分支/时间等。
  • 主题系统:内置多种 prompt 主题,社区主题(Powerlevel10k 等)更丰富。
  • 动态信息:git 状态、退出码、执行时间等可实时显示在提示符中。

其他特性

  • 拼写纠错git stauts 自动提示”did you mean git status?”
  • 共享历史:多个终端窗口共享命令历史,支持去重。
  • 目录栈pushd/popd 增强,cd - 快速切换最近目录。
  • 变量展开${var:u} 转大写,${var:l} 转小写,${(j.-.)array} 数组拼接。

Oh My Zsh 生态系统

Oh My Zsh 是 Zsh 的配置管理框架,提供:

  • 主题:150+ 内置主题(agnoster、robbyrussell 等)。
  • 插件:300+ 内置插件(git、docker、kubectl、zsh-autosuggestions 等)。
  • 一键安装sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

替代方案:prezto(更轻量)、zinit(更快的插件管理器)、starship(跨 Shell 提示符)。

与 Bash 的兼容性

  • Zsh 兼容 POSIX sh 和大部分 Bash 脚本,但有差异:
    • 数组索引从 1 开始(Bash 从 0 开始)。
    • ${var:0:3} 在 Zsh 中可能行为不同。
    • [[ ]] 条件表达式语法略有差异。
  • emulate bash 可临时切换到 Bash 兼容模式。
  • 系统脚本(#!/bin/sh)不建议用 Zsh 语法。

常见使用场景

  • 日常开发终端:配合 Oh My Zsh + 插件,极大提升交互效率。
  • macOS 默认 Shell:从 macOS Catalina 起取代 Bash 成为默认 Shell。
  • 服务器管理:交互式操作补全减少输入错误。

最小例子

# 安装 Zsh
sudo apt install zsh    # Debian/Ubuntu
brew install zsh        # macOS

# 设置为默认 Shell
chsh -s $(which zsh)

# 安装 Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
创建于 2026/2/23 更新于 2026/7/15