Fact-checked by Grok 2 weeks ago

Z shell

The Z shell (zsh) is a Unix shell designed primarily for interactive use, while also serving as a robust and command interpreter. Originally developed by Paul Falstad in 1990 as a student project at , zsh incorporates useful features from other shells such as , the Korn shell (ksh), and , alongside original enhancements that emphasize customization, command-line editing, and filename expansion. It is compatible with (sh) scripts and has become a popular choice for users seeking advanced functionality beyond basic shells, with its first public release occurring in 1990. Zsh's development has been community-driven since its inception, with key coordinators including Zefram (Andrew Main) until 1999, followed by Bart Schaefer and Peter Stephenson, who led major version releases such as 4.0 in 2001 and 5.0 in 2012. The project is hosted on and , with the latest stable release, version 5.9, issued on May 14, 2022, introducing improvements in security, history management, and module support. Notably, zsh was adopted as the default shell in in 2019, replacing due to its superior autocompletion, spelling correction, and theme support, and in Kali Linux starting with its 2020.4 release. Among its defining features, zsh offers the Zsh Line Editor (ZLE) for - or emacs-style command-line editing, including incremental search and programmable completions that expand on those in other shells. Its mechanism supports advanced recall with modifiers like ! substitution and options to ignore duplicates or spaced commands, while extended globbing allows complex pattern matching, such as recursive directory searches with ** or file qualifiers like (.) for regular files. For scripting, zsh provides powerful parameter expansion, arrays, associative arrays, and process substitution, enabling more concise and flexible automation compared to Bash or ksh, though it maintains POSIX compatibility for portability. These capabilities, combined with frameworks like Oh My Zsh for easy plugin management, have made zsh a favorite among developers for its balance of power and ease of use.

History

Origins

The Z shell, commonly known as zsh, was created by Paul Falstad in 1990 while he was a student in the of at . Falstad developed the shell as an extended to address shortcomings in existing Unix shells, particularly for interactive command-line use. The name "zsh" originates from the login ID of Zhong Shao, a at during Falstad's time there and later a professor at . Falstad selected this name partly because Shao's login "zsh" evoked a suitable shell identifier, with the "z" also referencing the last letter of the alphabet to imply extensibility and room for future enhancements. Zsh drew its foundational scripting capabilities from the (sh) but incorporated interactive improvements inspired by the (csh) and Korn shell (ksh), such as better command-line editing and history handling, to overcome the 's limitations in user-friendly interaction. The first public release occurred in 1990, leading to early adoption within academic settings, including Princeton's courses where it was referenced as a modern shell example.

Development and Releases

Following its initial creation by Paul Falstad in 1990, the source code for zsh version 2.3.1 was posted to the comp.sources.misc newsgroup around 1993 by the zsh development team, initiating broader community involvement. Development became community-driven, with Zefram (Andrew Main) serving as coordinator until 1999, followed by Bart Schaefer and Peter Stephenson, who oversaw major releases such as version 4.0 in 2001 and 5.0 in 2012. Key milestones include the release of version 3.0 in August 1996, which introduced major enhancements such as improved /ksh emulation, new expansion flags, and recursive globbing capabilities. Version 4.0, released in 2001, added support for new modules, better systems, and incremental improvements in scripting and line editing. Version 5.0, issued in July 2012, emphasized performance optimizations, sticky emulation modes, and new builtins like declare for enhanced scripting. The latest stable release is version 5.9, dated May 14, 2022, which incorporated bug fixes, security updates, and minor feature additions such as improved parameter expansion and datetime module enhancements. Zsh's development is hosted on , coordinated by Peter Stephenson with contributions from a global community via the zsh-workers , fostering incremental improvements in functionality and portability. As of November 2025, no major versions have followed 5.9, but the project continues with patches for security vulnerabilities, compatibility with modern systems, and minor refinements. A persistent challenge in Zsh's evolution has been maintaining backward compatibility for existing scripts and users while incorporating updates to align with evolving standards and system behaviors.

Features

Interactive Features

The Z shell (zsh) enhances interactive command-line use through a suite of features that prioritize efficiency and customization, distinguishing it from more basic shells like the . These include a sophisticated programmable system, advanced management, line editing capabilities, spell correction, flexible prompting, and extended globbing patterns, all designed to streamline daily terminal interactions. Zsh's programmable command-line completion system, known as compsys, provides context-sensitive suggestions based on the current command, options, and cursor position, allowing users to receive relevant matches such as file paths, options, or environment variables without manual specification. It supports menu selection for cycling through multiple options and partial matching via patterns like approximate corrections, enabling flexible input handling even with minor typos. This system uses a function to invoke context-specific completers, classifying matches with tags (e.g., directories or options) for prioritized display, which significantly reduces typing overhead in interactive sessions. The shell maintains a shared history mechanism across multiple sessions, facilitated by options like SHARE_HISTORY, which imports new commands from the history file and appends current ones in real-time, ensuring continuity when switching between terminals. Advanced editing modes integrate vi and emacs-style keybindings, with emacs as the default (e.g., Ctrl+B for backward character movement) and vi mode activated for insert/command switching via Escape, allowing seamless navigation, deletion, and history search (e.g., Ctrl+R for reverse incremental search). These modes are programmable via widgets, enabling custom behaviors tied to shell functions for tailored interactive editing. Spell-checking is built-in through options like CORRECT for command names and CORRECT_ALL for arguments, automatically detecting and suggesting corrections for mistyped entries before execution, which helps prevent errors in fast-paced interactive use. For instance, a misspelled command like "" prompts a correction to "," with ignored patterns configurable to avoid false positives on valid but uncommon names. Prompts in zsh are highly themeable, supporting dynamic expansion of parameters, commands, and conditionals to display contextual information such as the current or . The parameter enables a secondary prompt on the right side of the screen, often used for non-intrusive details like timestamps or job counts, while the vcs_info function integrates —such as branch names and modification indicators—directly into the for developers working in repositories. Globbing extensions in zsh allow for more expressive file matching in interactive commands, with recursive search via **/ (equivalent to zero or more directories) to traverse subdirectories, as in ls **/*.txt to find all text files deeply nested. Qualifier modifiers further refine patterns, such as ^ for (e.g., ls ^*.bak to list non-backup files) or . for regular files only, enabling precise selection without additional tools or loops. These require the EXTENDED_GLOB option but integrate seamlessly into everyday file operations.

Scripting Capabilities

Zsh provides powerful scripting capabilities that extend beyond basic shell functionality, enabling complex and . One of its key strengths lies in extended operators, which allow for sophisticated string processing directly within scripts. For instance, the operator ${parameter/[pattern](/page/Pattern)/repl} replaces the first occurrence of a specified in the 's value with a replacement string, facilitating efficient text substitution without external tools. The global variant ${parameter//[pattern](/page/Pattern)/repl} applies the replacement to all occurrences, and patterns can be anchored to the start (#) or end (%) of the string for precise control. These operators support elements as well, applying substitutions element-wise, which is particularly useful for files or logs in scripts. Associative arrays in Zsh offer a hash-like structure for key-value storage, declared using typeset -A arrayname to enable non-numeric indexing. Values can be assigned via array=(key1 value1 key2 value2) or incrementally with array+=(key3 value3), overwriting existing keys if present. Access occurs through ${array[key]}, and iteration over keys or values is supported via constructs like for key in ${(k)array}, making them ideal for or mapping tasks in scripts. Combined with advanced arithmetic evaluation using the (( )) syntax, Zsh supports both and floating-point operations with C-like precedence, such as (( result = (a + b) * c )). This double-parentheses form also handles bitwise shifts, (**), and conditional expressions (?:), with base conversions like via 0x prefixes, enhancing numerical computations in scripts without invoking external calculators. Job control in Zsh includes enhancements for managing background processes, such as referencing jobs by name with %jobname in addition to numeric slots like %1. This allows commands like fg %editor to foreground a uniquely named job, simplifying orchestration in multi-process environments. Disowning jobs supports conditional behaviors; for example, disown %1 removes a job from the table, while disown %1 &| first resumes a stopped job before disowning, and &! adds a warning if the job is stopped and auto-resumption is disabled. These features enable scripts to detach processes reliably, preventing termination upon script exit. Modular scripting is facilitated by loadable modules, which extend core functionality on demand via the zmodload builtin, such as zmodload zsh/complist for advanced listing with in scripted prompts. Other modules like zsh/net/tcp provide builtins for escaping and handling (e.g., ztcp -u for URL-encoded connections), allowing scripts to incorporate networking or utility features without bloating the base . For performance in large scripts, zmodload enables dynamic loading of only necessary modules, such as zsh/computil for optimized utilities, reducing overhead and startup time compared to static linking. This modular approach supports efficient, extensible for tasks ranging from system administration to data pipelines.

Compatibility and Extensions

The Z shell (Zsh) supports sh compliance when extensions are disabled through its emulation modes, allowing it to behave as a standards-conforming for scripting purposes. Specifically, invoking Zsh as sh or using the emulate sh builtin command enables this mode, which restricts Zsh's advanced features to match requirements, such as handling pipelines and variable expansions in a compatible manner. This emulation ensures that -compliant scripts run without modification, though Zsh's default mode includes non- enhancements like extended globbing and advanced parameter expansion. For backward compatibility with other shells, Zsh provides emulation for and Korn shell (ksh) scripts primarily through invocation-based switching and option flags. When invoked as ksh, Zsh automatically sets options like KSH_ARRAYS and SH_WORD_SPLIT to mimic ksh behavior, including array indexing and word splitting semantics. Similarly, compatibility is achieved via shared Bourne heritage and options such as SH_FILE_EXPANSION for file expansion order, though full equivalence requires selective use of emulation to handle differences in features like . The emulate ksh or emulate sh commands further allow runtime switching for script portability, with flags like those under SH_OPTION_LETTERS aligning single-letter options to ksh conventions. Zsh's extensibility is facilitated by its loadable modules system, which permits of optional components at runtime without recompiling the shell. For instance, the zsh/zpty module provides pseudo-terminal support for tasks like running subprocesses in isolated environments, while the zsh/parameter module exposes internal hash tables through special parameters for advanced manipulation. These modules, compiled as shared objects, can be loaded via the zmodload builtin, enabling users to extend functionality modularly. Integration with external tools, such as , occurs through built-in hooks and modules that avoid core modifications. The vcs_info module, for example, hooks into directory changes via the chpwd function to query repositories and display status information in prompts, supporting features like branch names and commit statuses without altering Zsh's base code. Third-party extensions can leverage this system by defining custom hook functions (e.g., preexec or precmd) to interface with tools like , ensuring seamless interoperability. Despite these capabilities, Zsh has limitations in replicating certain features, often requiring workarounds for full compatibility. While Zsh incorporates some csh-like syntax elements, such as history substitution, it does not fully emulate tcsh's job control or built-in editor behaviors, leading to differences in interactive usage that necessitate adaptations like aliases or functions.

Configuration

Startup Files

The Z shell (Zsh) initializes its through a series of startup files that are sourced in a specific order depending on the shell type—login, interactive, or non-interactive. These files allow users to configure variables, aliases, functions, and other settings systematically. The process begins with system-wide files and proceeds to user-specific ones, ensuring consistent across different invocation contexts. Zsh distinguishes between login shells, which are typically started at terminal login or via explicit login commands, and non-login shells, which include interactive sessions launched from a graphical terminal or scripts. For login shells, the files .zprofile and .zlogin handle initial environment setup and final login configurations, respectively, such as modifying the or starting daemons. In contrast, .zshrc is sourced for all interactive non-login shells, making it the primary location for interactive enhancements like aliases and key bindings. Non-interactive shells, such as those running scripts, may only source environment files if needed. The sourcing order ensures that foundational settings load first and more specific ones follow. All shells always source /etc/zshenv (a system-wide file that cannot be overridden), followed by the user-specific ~/.zshenv for basic environment variables. For login shells, this continues with /etc/zprofile, ~/.zprofile, /etc/zlogin, and ~/.zlogin. Interactive shells then source /etc/zshrc and ~/.zshrc. Upon logout from a login shell, ~/.zlogout and /etc/zlogout execute cleanup tasks. If the $ZDOTDIR variable is unset, Zsh defaults to $HOME for locating user files. These files can be pre-compiled with zcompile for faster loading. Environment setup, including modifications, is best handled in ~/.zshenv or ~/.zprofile to apply broadly without assuming ; for example, appending directories to the array with path=(~/bin $path) and exporting variables like export EDITOR='vim'. Aliases and s, however, belong in ~/.zshrc to avoid execution in non-interactive contexts; a simple alias might be defined as alias ll='ls -l', while s can be loaded efficiently using autoload to defer sourcing until , such as autoload -U myfunction where the body resides in a under $fpath. This separation prevents unnecessary overhead in scripts. To avoid duplication and ensure compatibility, best practices include conditional loading in startup files. For instance, wrap Zsh-specific configurations in if [[ -n $ZSH_VERSION ]]; then ... fi to prevent errors if sourced by other shells like . Use typeset -U path to maintain unique entries in the array, and test for existing paths with conditionals like if [[ -z ${path[(r)$dir]} ]]; then path+=($dir); fi before appending. Functions should be autoloaded rather than defined inline in ~/.zshrc to reduce initial load time, storing them in dedicated directories added to $fpath. Prompt customization, such as setting the PS1 variable, is typically done in ~/.zshrc for interactive sessions.

Prompt and Themes

The Z shell (Zsh) allows extensive customization of its command-line , enabling users to display contextual information such as the current directory, user details, and command status in a personalized format. This is achieved primarily through the PROMPT variable for the left-hand (primary) and RPS1 for the right-hand , which support special sequences to render dynamic content. These prompts are evaluated before each command line is displayed, providing an interactive and informative interface without requiring external tools for basic setups. Prompt expansion in Zsh uses percent-sign sequences (%) to insert variables and conditions into the string. For instance, %d expands to the current , while %~ provides a home-relative path, replacing the user's with ~ for brevity (e.g., ~/Documents instead of /home/user/Documents). Conditional expressions follow the %(condition.true-text.false-text), allowing selective display based on shell state; an example is %(?.%F{green}ok%f.%F{red}err%f) to show "ok" in green for successful commands or "err" in red for failures, where ? tests the of the previous command. Color escapes enhance visibility, with %F{color} starting foreground color (e.g., %F{red} for red text) and %f resetting it; supported colors include named values like "red", "blue", or numeric codes. For dynamic updates, Zsh provides hooks like precmd, which executes a user-defined just before displaying each , ideal for computing and setting content based on conditions such as the current time or changes. A simple example is defining precmd() { RPS1=$(date +%H:%M) } in the to show the current time on the right , updating automatically on each redraw. The preexec hook runs after a command is entered but before execution, allowing preemptive adjustments, though precmd is more commonly used for post-command updates. Manual theme setup involves directly assigning values to PROMPT or RPS1 in the shell configuration file (e.g., ~/.zshrc), such as PROMPT='%n@%m:%~ %#' to display username (%n), hostname (%m), home-relative directory, and a privilege indicator (%# for root or %! for normal user). For broader theming, frameworks like Oh My Zsh simplify installation by cloning the repository (e.g., sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)") and setting ZSH_THEME="theme_name" in ~/.zshrc, where themes are .zsh-theme files defining prompt layouts via the same expansion syntax. Advanced integrations, such as powerlevel10k, extend this with git-aware prompts showing branch status and changes; installation involves cloning the repository to a themes directory and sourcing it in ~/.zshrc, followed by running p10k configure for interactive setup, leveraging Zsh's expansion for segments like repository state. Common customizations include incorporating and information (%n@%m), previous command codes via conditionals (%(?. .)), and external like status through scripts called in precmd (e.g., querying tools for percentage and displaying conditionally). These elements combine to create informative prompts, such as one showing user@host:~/project (main ±) % with details, balancing utility and aesthetics.

Community and Adoption

One of the most prominent frameworks for enhancing Zsh is Oh My Zsh, an open-source configuration management system launched in August 2009. It provides over 300 optional plugins—such as those for , , Rails, and Homebrew—along with more than 140 themes to customize the shell prompt and auto-update tools for maintaining the latest community contributions. The framework simplifies installation through a single command: sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)". Several alternatives offer lighter or more specialized configurations compared to Oh My Zsh. Prezto, initialized in 2011, serves as a streamlined configuration framework emphasizing sane defaults, aliases, functions, and completions without the heavier overhead of extensive theming. For plugin management, provides a bundle-based system inspired by Vim's Vundle, enabling easy loading of Zsh plugins via simple function calls in the configuration file. (formerly Zinit), a flexible plugin manager, supports turbo mode for up to 80% faster startup times and handles both plugins and themes efficiently. Additionally, Powerlevel10k focuses on prompt theming, delivering high-speed rendering and extensive customization options for an out-of-the-box experience. Zsh frameworks like Oh My Zsh typically manage plugins through sourcing mechanisms, often incorporating them as submodules or by cloning repositories into a dedicated directory, which are then loaded in startup files such as .zshrc. For instance, the zsh-autosuggestions plugin integrates Fish-like inline command predictions based on history and completions, enhancing interactive typing without requiring manual intervention. The growth of these frameworks reflects strong ; Oh My Zsh, for example, has amassed over 175,000 stars and benefits from more than 1,600 contributors submitting pull requests for new features and fixes as of November 2025. However, a common drawback is the potential for performance degradation, as loading numerous plugins can increase shell startup times significantly, sometimes by hundreds of milliseconds on resource-constrained systems.

Usage in Operating Systems

Zsh has been adopted as the default interactive shell in several prominent operating systems, reflecting its enhanced features and compatibility advantages over alternatives like . In , released in 2019, Apple switched the default shell from to Zsh, citing the latter's superior , improved tab completion, and spelling correction capabilities; this change was also influenced by Bash's transition to the GPLv3 license, which complicated Apple's binary distribution requirements. Similarly, version 2020.4 marked a significant shift by making Zsh the default shell for images and instances, aiming to leverage its powerful scripting and interactive tools for security-focused workflows. In contrast, distributions like 24.10 retain as the default but position Zsh as a robust , installable with minimal effort to support users seeking advanced command-line . Zsh's broad availability through standard package managers further facilitates its integration across diverse operating systems. On Debian-based distributions such as , it is distributed via the apt repository, allowing straightforward installation with sudo apt install zsh. macOS users can access the latest builds using Homebrew with brew install zsh, ensuring compatibility with Apple's pre-installed version. In BSD environments, Zsh is compiled and installed from ports collections, for example, in via cd /usr/ports/shells/zsh && make install clean, providing flexibility for system administrators. On mobile platforms, users benefit from Zsh's pre-installation support in , where it can be added using pkg install zsh, enabling a full-featured experience in a containerized environment. Zsh is also commonly used in Windows via the (WSL), where it can be installed as an alternative for enhanced developer workflows. Among developers, Zsh demonstrates notable adoption, particularly driven by its status as macOS's default shell, which correlates with higher usage in Apple-centric workflows; recent Stack Overflow Developer Surveys, including the edition, underscore this trend, showing Zsh at approximately 30% usage and appealing in professional development environments where interactive efficiency is prioritized. It integrates seamlessly as the default in tools like on macOS, where the emulator inherits the system's Zsh shell for enhanced session management and history tracking. Visual Studio Code's integrated similarly defaults to Zsh on macOS via the $SHELL , streamlining editing and command execution. In cloud platforms, AWS CloudShell defaults to but supports Zsh natively, with increasing user preference for its plugin ecosystem and customization in managed environments. Looking ahead, Zsh's adoption remains steady as of November 2025, with the project stable at version 5.9—a security and feature update released on May 6, 2022, without groundbreaking changes that might accelerate uptake. The absence of a version 6.0 release suggests continued reliance on its mature 5.x series, sustaining its role in operating systems and developer tools without disruptive shifts.

References

  1. [1]
    ZSH - THE Z SHELL
    May 14, 2022 · Zsh is a shell designed for interactive use and a powerful scripting language, incorporating features from bash, ksh, and tcsh.
  2. [2]
    zsh(1): Z shell - Linux man page - Die.net
    Zsh was originally written by Paul Falstad <pf@zsh.org>. Zsh is now maintained by the members of the zsh-workers mailing list <zsh-workers@sunsite.dk>. The ...Missing: creator | Show results with:creator
  3. [3]
    llua/zsh-1.0: The original release of zsh, for archival purposes.
    This shell was "developed" by me, Paul Falstad, a sophomore at Princeton University. ... This version of the shell has fallen far short of that goal; I ...Missing: creator | Show results with:creator
  4. [4]
    News about ZSH - SourceForge
    May 14, 2022 · Version 3.0.5 of zsh was released September 26 1997. Version 2.5: This version is still available, but it is deprecated and its continued use is ...
  5. [5]
    zsh-users/zsh: Mirror of the Z shell source code repository. - GitHub
    This is a security and feature release. There are several visible improvements since 5.9, as well as bug fixes. All zsh installations are encouraged to upgrade ...
  6. [6]
    Apple replaces bash with zsh as the default shell in macOS Catalina
    Jun 4, 2019 · Starting with macOS Catalina, Macs will now use zsh as the default login shell and interactive shell across the operating system.
  7. [7]
    An Introduction to the Z Shell
    This file is an Introduction to the Z Shell, by Paul Falstad. It was converted from the original intro. troff file distributed with zsh v2.Missing: creator | Show results with:creator
  8. [8]
    Oh My Zsh - a delightful & open source framework for Zsh
    Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions.
  9. [9]
    [PDF] Lecture 2: Project Information - cs.Princeton
    Mar 1, 2019 · – zsh. (written in 1990 by Paul Falstad '92). Page 18. Features common to Unix shells. • command execution. + built-in commands, e.g., cd.
  10. [10]
    The Z Shell Manual - zsh
    May 14, 2022 · This Info file documents Zsh, a freely available UNIX command interpreter (shell), which of the standard shells most closely resembles the Korn shell (ksh).22 Zsh Modules · 18 Zsh Line Editor · 16 Options · 17 Shell Builtin Commands<|control11|><|separator|>
  11. [11]
    Re: ZSH History
    Meino Christian Cramer wrote: > The name ZSH derives from Zhong Shao, teaching assistant at Princeton > university (now [2004] at Yale). Paul Falstad ...
  12. [12]
    Chapter 2: How does zsh differ from...?
    zsh is most similar to ksh, while many of the additions are to please csh users. Here are some more detailed notes.Missing: inspirations | Show results with:inspirations
  13. [13]
    [PDF] Advanced Programming Techniques Christopher Moretti - cs.Princeton
    ❖ zsh Paul Falstad '92 (developed in 1990 - hey '18s, what are YOU doing?) Page 7. Shell Scripting. ❖ “Program-based” programming. ❖ gluing together ...
  14. [14]
    v35i051: zsh - The Z Shell, version 2.3.1, Part01/22 - Google Groups
    To subscribe to the list, send a request to "zsh-r... ... # The tool that generated this appeared in the comp.sources.unix newsgroup; ... XJohn Guthrie Peter ...
  15. [15]
    zsh-3.0.0 released
    The release files are: 628435 Aug 15 19:43 zsh-3.0.0.tar.gz 1327843 Aug 15 19:44 zsh-RCS.tar.gz ... Messages sorted by: Reverse Date, Date, Thread, Author.
  16. [16]
    Zsh Mailing List Archive: zsh-announce 1995–present
    2022/05/16 zsh 5.9 released dana · 2022/02/12 zsh 5.8.1 released (CVE-2021-45444) dana · 2020/02/15 zsh 5.8 released dana · 2019/02/05 zsh 5.7.1 released dana ...
  17. [17]
    zsh: 2 Introduction - Z shell - SourceForge
    The development is currently coordinated by Peter Stephenson <pws@zsh.org>. ... Zsh version 5.9, released on May 14, 2022.
  18. [18]
    zsh / News - SourceForge
    Zsh 4.0.1 released. Version 4.0.1 of zsh, the Z-Shell, has been released. This is a stable release with many enhancements over the previous stable release ...
  19. [19]
    20 Completion System - zsh
    The function bashcompinit provides compatibility with bash's programmable completion system. When run it will define the functions, compgen and complete ...Initialization · Completion System... · Control Functions · Bindable Commands
  20. [20]
    16 Options - zsh
    Zsh options are primarily referred to by name, case insensitive, and can be inverted with 'no'. Some have single letter names. Default options are marked <D>.
  21. [21]
    Chapter 4: The Z-Shell Line Editor
    We now come to the newest and most flexible part of zle, the ability to create new editing commands, as complicated as you like, using shell functions. This was ...<|control11|><|separator|>
  22. [22]
    13 Prompt Expansion - zsh
    Prompt sequences undergo a special form of expansion. This type of expansion is also available using the -P option to the print builtin.
  23. [23]
    26 User Contributions - zsh
    You need to call vcs_info from your precmd function. Once that is done you need a single quoted '${vcs_info_msg_0_}' in your prompt. To be able to use '${ ...
  24. [24]
    14 Expansion - zsh
    History expansion allows you to use words from previous command lines in the command line you are typing. This simplifies spelling corrections.
  25. [25]
    15 Parameters - zsh
    As REPLY, but for array values rather than strings. RPROMPT <S>: RPS1 <S>. This prompt is displayed on the right-hand side of the screen when the primary prompt ...
  26. [26]
    11 Arithmetic Evaluation - zsh
    11 Arithmetic Evaluation. The shell can perform integer and floating point arithmetic, either using the builtin let, or via a substitution of the form $(( .Missing: manual | Show results with:manual
  27. [27]
    17 Shell Builtin Commands - zsh
    17 Shell Builtin Commands. Some shell builtin commands take options as described in individual entries; these are often referred to in the list below as ...
  28. [28]
    22 Zsh Modules
    To enable scrolling through a completion list, the LISTPROMPT parameter must be set. Its value will be used as the prompt; if it is the empty string, a default ...Missing: RPROMPT | Show results with:RPROMPT
  29. [29]
    4 Invocation - zsh
    Zsh tries to emulate sh or ksh when it is invoked as sh or ksh respectively; more precisely, it looks at the first letter of the name by which it was invoked, ...
  30. [30]
    [TeX] A User's Guide to the Z-Shell
    The grandfather of all UNIX shells is sh, now known as the Bourne shell but originally just referred to as 'the shell'. The story is similar to ksh: zsh can ...
  31. [31]
    5 Files - zsh
    5.1 Startup/Shutdown Files Commands are first read from /etc/zshenv; this cannot be overridden. Subsequent behaviour is modified by the RCS and GLOBAL_RCS ...
  32. [32]
    Chapter 2: What to put in your startup files - Z shell
    When you first log into the computer, the shell you are presented with is interactive, but it is also a login shell. If you type ` zsh ', it starts up a new ...
  33. [33]
    9 Functions - zsh
    It first adds the history line to the normal history with the newline stripped, which is usually the correct behaviour. Then it switches the history context so ...
  34. [34]
    Customization · ohmyzsh/ohmyzsh Wiki - GitHub
    Oh My Zsh is fully configurable to your needs with the help of the $ZSH_CUSTOM variable, whether you want to change its internals, plugins or the rich theme ...
  35. [35]
    romkatv/powerlevel10k: A Zsh theme - GitHub
    Powerlevel10k is a theme for Zsh. It emphasizes speed, flexibility and out-of-the-box experience. Powerlevel10k. Getting started; Features; Installation ...
  36. [36]
    d'Oh My Zsh - freeCodeCamp
    Mar 23, 2016 · Oh My Zsh is a community-driven framework for managing zsh configurations, sharing a config, and includes 200+ optional plugins.
  37. [37]
    ohmyzsh/ohmyzsh - GitHub
    A delightful community-driven (with 2,400+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub ...Installing ZSH · Themes · Oh My Zsh · Plugins
  38. [38]
    sorin-ionescu/prezto: The configuration framework for Zsh - GitHub
    Mar 4, 2011 · Prezto is the configuration framework for Zsh; it enriches the command line interface environment with sane defaults, aliases, functions, auto ...Pull requests 46 · Issues 140 · Actions · Security
  39. [39]
    zsh-users/antigen: The plugin manager for zsh. - GitHub
    Antigen is a small set of functions that help you easily manage your shell (zsh) plugins, called bundles.Installation · Commands · Show off · Issues 83
  40. [40]
    zdharma-continuum/zinit: Flexible and fast ZSH plugin manager
    Zinit is currently the only plugin manager that provides Turbo mode, which yields 50-80% faster Zsh startup (i.e., the shell will start up to 5 times faster!).
  41. [41]
    Fish-like autosuggestions for zsh - GitHub
    Fish-like fast/unobtrusive autosuggestions for zsh. It suggests commands as you type based on history and completions.
  42. [42]
    FAQ · ohmyzsh/ohmyzsh Wiki - GitHub
    Zsh is a shell, just like bash or fish, which interprets commands and runs them. Oh My Zsh is a framework built on top of zsh that is structured to allow it to ...Missing: origins | Show results with:origins
  43. [43]
    Kali Linux 2020.4 Release (ZSH, Bash, CME, MOTD, AWS, Docs ...
    Nov 18, 2020 · ZSH will be the default shell on our desktop images (amd64/i386), and cloud. For the time being, other platforms (e.g. ARM, containers, ...ZSH Shell By Default · Bash Shell Makeover · Kali-Docs & Packaging Guides
  44. [44]
    How to Install Zsh on Ubuntu | phoenixNAP KB
    Feb 6, 2025 · This guide shows how to install and configure the Zsh in Ubuntu. See customization options and maximize your performance with Z Shell.
  45. [45]
    Zsh (Z shell) for macOS - Wilson Mar
    Jun 15, 2025 · At time of writing (under macOS Monterey), it's 5.8 2022-05-14 : Release 5.9 Security and bug fix release with several feature additions. zsh ...
  46. [46]
    zsh - The Z shell - FreshPorts
    May 19, 2022 · Zsh is the Swiss Army knife of shells. It combines the most popular features of every other shell, and then lets you customize every inch of ...
  47. [47]
    ZSH - Termux Wiki
    Zsh is a shell for interactive use and a scripting language. It can be installed with `pkg install zsh` and set as default with `chsh -s zsh`.
  48. [48]
    2025 Stack Overflow Developer Survey
    This annual Developer Survey provides a crucial snapshot into the needs of the global developer community, focusing on the tools and technologies they use or ...
  49. [49]
    Shell Integration - iTerm2 - macOS Terminal Replacement - iTerm2
    iTerm2 may be integrated with the unix shell so that it can keep track of your command history, current working directory, host name, and more--even over ssh.Triggers · Features · How To Use It
  50. [50]
    Terminal Profiles - Visual Studio Code
    The default terminal profile shell defaults to $SHELL on Linux and macOS and PowerShell on Windows. VS Code will automatically detect most standard shells that ...Configuring profiles · Configuring the task/debug... · Cmder · Cygwin
  51. [51]
    AWS CloudShell compute environment: specifications and software
    The Z Shell, also known as zsh , is an extended version of the Bourne Shell that offers enhanced customization support for themes and plugins. zsh --version ...CloudShell network... · Pre-installed software · Installing AWS CLI to your...
  52. [52]
    ZSH - Release Notes
    ... shell's history (both internal and using the history file). With automatic scoping (fc -ap) it becomes easy to use a temporary history in a function. This ...