Z shell

Last updated
Z shell
Original author(s) Paul Falstad [1]
Developer(s) Peter Stephenson, et al. [1]
Initial release1990;34 years ago (1990)
Stable release
5.9 [2]   OOjs UI icon edit-ltr-progressive.svg / 14 May 2022;2 years ago (14 May 2022)
Repository
Written in C
Operating system Cross-platform
Type Unix shell
License MIT-Modern-Variant [3] [4]
Website www.zsh.org

The Z shell (Zsh) is a Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.

Contents

Zsh was created by Paul Falstad in 1990 while he was a student at Princeton University. It combines features from both ksh and tcsh, offering functionality such as programmable command-line completion, extended file globbing, improved variable/array handling, and themeable prompts.

Zsh is available for Microsoft Windows as part of the UnxUtils collection and has been adopted as the default shell for macOS and Kali Linux. The "Oh My Zsh" user community website provides a platform for third-party plug-ins and themes, featuring a large and active contributor base.

History

Paul Falstad wrote the first version of Zsh in 1990 [5] while a student at Princeton University. [6] The name zsh derives from the name of Yale professor Zhong Shao (then a teaching assistant at Princeton University) – Paul Falstad regarded Shao's login-id, "zsh", as a good name for a shell. [7] [8]

Zsh was at first intended to be a subset of csh for the Amiga, but expanded far beyond that. By the time of the release of version 1.0 in 1990 the aim was to be a cross between ksh and tcsh – a powerful "command and programming language" that is well-designed and logical (like ksh), but also built for humans (like tcsh), with all the neat features like spell checking, login/logout watching and termcap support that were "probably too weird to make it into an AT&T product". [9]

Zsh is available for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities. [10]

In 2019, macOS Catalina adopted Zsh as the default login shell, replacing the GPLv2 licensed version of Bash, [11] and when Bash is run interactively on Catalina, a warning is shown by default. [12]

In 2020, Kali Linux adopted Zsh as the default shell since its 2020.4 release. [13]

Features

Z shell's configuration utility for new users Zsh 5.8 new install screenshot.png
Z shell's configuration utility for new users
Zsh with Agnoster theme running on Konsole terminal emulator Zsh-agnoster.png
Zsh with Agnoster theme running on Konsole terminal emulator

Features include: [14]

Community

Oh My Zsh logo Oh My Zsh logo.png
Oh My Zsh logo

A user community website known as "Oh My Zsh" collects third-party plug-ins and themes for the Z shell. As of 2024, their GitHub repository has over 2300 contributors, over 300 plug-ins, and over 140 themes. It also comes with an auto-update tool that makes it easier to keep installed plug-ins and themes updated. [15]

See also

Related Research Articles

<span class="mw-page-title-main">Bash (Unix shell)</span> GNU replacement for the Bourne shell

Bash, short for Bourne-Again SHell, is a shell program and command language supported by the Free Software Foundation and first developed for the GNU Project by Brian Fox. Designed as a 100% free software alternative for the Bourne shell, it was initially released in 1989. Its moniker is a play on words, referencing both its predecessor, the Bourne shell, and the concept of rebirth.

<span class="mw-page-title-main">Unix shell</span> Command-line interpreter for Unix operating system

A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system to control the execution of the system using shell scripts.

uniq is a utility command on Unix, Plan 9, Inferno, and Unix-like operating systems which, when fed a text file or standard input, outputs the text with adjacent identical lines collapsed to one, unique line of text.

<span class="mw-page-title-main">Bourne shell</span> Command-line interpreter for operating systems

The Bourne shell (sh) is a shell command-line interpreter for computer operating systems.

Almquist shell is a lightweight Unix shell originally written by Kenneth Almquist in the late 1980s. Initially a clone of the System V.4 variant of the Bourne shell, it replaced the original Bourne shell in the BSD versions of Unix released in the early 1990s.

uname Standard UNIX utility that prints name and other details about the machine

uname is a computer program in Unix and Unix-like computer operating systems that prints the name, version and other details about the current machine and the operating system running on it.

chown Command used on Unix-like systems to change the owner of a file

The command chown, an abbreviation of change owner, is used on Unix and Unix-like operating systems to change the owner of file system files and directories. Unprivileged (regular) users who wish to change the group membership of a file that they own may use chgrp.

In computing, touch is a command used to update the access date and/or modification date of a computer file or directory. It is included in Unix and Unix-like operating systems, TSC's FLEX, Digital Research/Novell DR DOS, the AROS shell, the Microware OS-9 shell, and ReactOS. The command is also available for FreeDOS and Microsoft Windows.

The Unix command su, which stands for 'substitute user', is used by a computer user to execute commands with the privileges of another user account. When executed it invokes a shell without changing the current working directory or the user environment.

nl is a Unix utility for numbering lines, either from a file or from standard input, reproducing output on standard output.

test is a command-line utility found in Unix, Plan 9, and Unix-like operating systems that evaluates conditional expressions. test was turned into a shell builtin command in 1981 with UNIX System III and at the same time made available under the alternate name [.

whoami Command on various operating systems

In computing, whoami is a command found on most Unix-like operating systems, Intel iRMX 86, every Microsoft Windows operating system since Windows Server 2003, and on ReactOS. It is a concatenation of the words "Who am I?" and prints the effective username of the current user when invoked.

UnxUtils is a collection of ports of common GNU Unix-like utilities to native Win32, with executables only depending on the Microsoft C-runtime msvcrt.dll. The collection was last updated externally on April 15, 2003, by Karl M. Syring. The most recent release package available as of December 2016 was an open-source project, UnxUtils at SourceForge, with the latest binary release in March, 2007. The independent distribution included a main zip archive complemented by more recent updates, but the SourceForge project has no UnxUpdates.zip package. An alternative source of Unix-like utilities for Windows is GnuWin32; it has later versions of many programs, but requires supporting files in many cases.

The Environment Modules system is a tool to help users manage their Unix or Linux shell environment, by allowing groups of related environment-variable settings to be made or removed dynamically.

logname

In computer software, logname is a program in Unix and Unix-like operating systems that prints the name of the user who is currently logged in on the terminal. It usually corresponds to the LOGNAME variable in the system-state environment.

In computing, which is a command for various operating systems used to identify the location of executables. The command is available in Unix and Unix-like systems, the AROS shell, for FreeDOS and for Microsoft Windows. The functionality of the which command is similar to some implementations of the type command. POSIX specifies a command named command that also covers this functionality.

dirname is a standard computer program on Unix and Unix-like operating systems. When dirname is given a pathname, it will delete any suffix beginning with the last slash ('/') character and return the result. dirname is described in the Single UNIX Specification and is primarily used in shell scripts.

The script command is a Unix utility that records a terminal session. It dates back to the 1979 3.0 Berkeley Software Distribution (BSD).

The csplit command in Unix and Unix-like operating systems is a utility that is used to split a file into two or more smaller files determined by context lines.

On Unix-like computer systems, seq is a utility for generating a sequence of numbers.

References

  1. 1 2 "The Z Shell Manual" (Version 5.8.1). Sourceforge.io. July 21, 2012. Archived from the original on February 20, 2018. Retrieved March 29, 2022.
  2. "zsh 5.9 released".
  3. "zsh / Code / [281031] /LICENCE". Paul Falstad. Archived from the original on March 2, 2021. Retrieved February 7, 2015.
  4. "MIT License Modern Variant".
  5. "zsh - a ksh/tcsh-like shell (part 1 of 8)". alt.sources. December 14, 1990. Retrieved September 18, 2012.
  6. "Z-Shell Frequently-Asked Questions". Sourceforge.net. February 15, 2010. Archived from the original on March 2, 2021. Retrieved September 18, 2012.
  7. "The Z-Shell (ZSH) Lovers' Page". Guckes.net. c. 2004. Archived from the original on May 17, 2017. Retrieved October 2, 2012.
  8. "Zsh Mailing List Archive". Zsh.org. August 8, 2005. Archived from the original on March 2, 2021. Retrieved October 2, 2012.
  9. "zsh 1.0 announcement". GitHub . 15 April 2021.
  10. "Native Win32 ports of some GNU utilities". Archived from the original on 2006-02-09. Retrieved 2020-07-25.
  11. Warren, Tom (June 4, 2019). "Apple replaces bash with zsh as the default shell in macOS Catalina". The Verge. Archived from the original on June 10, 2019. Retrieved June 13, 2019.
  12. "Use zsh as the default shell on your Mac - Apple Support". Archived from the original on 2 December 2019. Retrieved 1 July 2019.
  13. "Kali Linux 2020.4 Release (ZSH, Bash, CME, MOTD, AWS, Docs, Win-KeX & Vagrant) | Kali Linux Blog". Kali Linux. Retrieved 2021-03-03.
  14. "Z-Shell Frequently-Asked Questions". zsh.sourceforge.net. Archived from the original on 2021-03-02. Retrieved 2020-03-04.
  15. "ohmyzsh Github". Github.