Zsh

Zsh
Logo Zsh
Logo programu
Ilustracja
Sesja powłoki Zsh
Autor Paul Falstad
Pierwsze wydanie 1990
Aktualna wersja stabilna 5.9.2
(12 lipca 2026) [±]
Język programowania C
Platforma sprzętowa Wieloplatformowość
System operacyjny GNU
Rodzaj Powłoka systemowa
Licencja MIT
Strona internetowa

Zsh (Z shell) – uniksowa powłoka (ang. shell) nadająca się zarówno do interaktywnej pracy z systemem, jak i do wykonywania skryptów. Spośród standardowych powłok Zsh najbardziej przypomina Korn shell, ale zawiera wiele ulepszeń. Zsh posiada m.in. edycję wiersza poleceń (zle – Zsh Line Editor), wbudowaną korekcję pisowni, programowalne dopełnianie poleceń, funkcje (z automatycznym ładowaniem) oraz zaawansowaną historię poleceń. Zsh jest domyślną powłoką systemu macOS (od wersji Catalina z 2019) i Kali Linux (od 2020).

Zsh został napisany w 1990 przez Paula Falstada. Obecnie Zsh jest utrzymywany przez członków listy dyskusyjnej zsh-workers, koordynatorem projektu jest Peter Stephenson .

Podstawowa składnia

Polecenia

W wierszu poleceń pierwsze słowo to polecenie do wykonania, a pozostałe słowa, jeśli występują, to argumenty polecenia. Jeśli podano nazwę polecenia, przypisania parametrów modyfikują środowisko polecenia podczas jego wykonywania. Wartością prostego polecenia jest jego kod wyjścia (0 jeśli polecenie zakończyło się poprawnie, ≥ 1 dla różnych błędów). Na przykład print -- foo to proste polecenie (print) z dwoma parametrami: opcją -- i argumentem foo.

Potoki

Potok to albo proste polecenie, albo sekwencja dwóch lub więcej prostych poleceń, gdzie każde polecenie jest oddzielone od następnego znakiem | lub |&. W przypadku, gdy polecenia są rozdzielone znakiem „|”, standardowe wyjście pierwszego polecenia jest połączone ze standardowym wejściem następnego. |& to skrót od 2>&1 |, który łączy zarówno standardowe wyjście, jak i standardowy błąd polecenia ze standardowym wejściem następnego. Wartością potoku jest wartość ostatniego polecenia, chyba że potok jest poprzedzony znakiem !. W takim przypadku wartość jest logiczną odwrotnością wartości ostatniego polecenia. Na przykład print foo | sed 's/foo/bar/' to potok, w którym wyjście („foo” plus znak nowej linii) pierwszego polecenia (print) zostanie przekazane do wejścia drugiego (sed).

Listy poleceń (sublist)

Lista poleceń może być pojedynczym potokiem lub kilkoma potokami połączonymi operatorami && albo ||. Jeśli dwa potoki są rozdzielone znakiem && (koniunkcja), drugi potok jest wykonywany tylko wtedy, gdy pierwszy zakończy się powodzeniem (zwróci status zerowy). Jeśli dwa potoki są rozdzielone znakiem || (alternatywa), drugi jest wykonywany tylko wtedy, gdy pierwszy zakończy się niepowodzeniem (zwróci status różny od zera). Oba operatory mają równy priorytet i są lewostronnie asocjacyjne. Wartością listy poleceń jest wartość ostatniego wykonanego potoku. Na przykład:

sudo dmesg | grep -qi panic && print -- Był 'panic' || print -- Nie było 'panic'

to lista poleceń składająca się z trzech potoków, przy czym drugi potok zostanie wykonane wtedy i tylko wtedy, gdy polecenie grep zwróci status zerowy, w przeciwnym wypadku zostanie wykonany odstani potok.

Moduły

Niektóre opcjonalne części Zsh znajdują się w dedykowanych modułach, oddzielonych od rdzenia powłoki – każdy z tych modułów może być połączony z powłoką w czasie kompilacji lub może być dynamicznie łączony podczas działania powłoki.

Wybrane moduły:

Parametry startowe

Zsh w wersji 5.9 posiada prawie 200 parametrów startowych (opcji i flag), kilkadziesiąt z nich posiada jednoznakowy skrót. Jeżeli flaga -s nie została podana, a został podany jakiś argument to pierwszy argument uznawany jest za ścieżkę skryptu, który ma zostać wykonany. Pozostałe argumenty są traktowane jako parametry pozycyjne.

Parametry startowe (opcje specjalne):

Wybrane opcje:

Pliki startowe/końcowe

Polecenia są najpierw czytane z /etc/zshenv. Jeżeli opcja RCS nie jest ustawiona w /etc/zshenv, wszystkie pozostałe pliki startowe są pomijane. W przeciwnym wypadku polecenia są czytane z $ZDOTDIR/.zshenv. Jeżeli powłoka jest powłoką zameldowania (loginową), polecenia są czytane z /etc/zprofile, a następnie z $ZDOTDIR/.zprofile. Następnie, jeżeli powłoka jest interaktywna, polecenia są czytane z /etc/zshrc i $ZDOTDIR/.zshrc. Na koniec, jeżeli powłoka jest powłoką zameldowania, czytane są pliki /etc/zlogin i $ZDOTDIR/.zlogin.

Jeżeli zmienna $ZDOTDIR nie jest ustawiona, używana jest zmienna $HOME. Wymienione powyżej pliki z katalogu /etc, w zależności od systemu, mogą znajdować się w innym katalogu.

Listy dyskusyjne

Istnieją cztery listy dyskusyjne poświęcone Zsh:

Zobacz też

Przypisy

  1. 1 2 Introduction to Zsh [online], zsh.sourceforge.io [dostęp 2026-02-07].
  2. ↑ Zsh Line Editor [online], zsh.sourceforge.io [dostęp 2026-02-07].
  3. ↑ Zsh Expansion [online], zsh.sourceforge.io [dostęp 2026-02-07].
  4. ↑ Tom Warren, Apple replaces bash with zsh as the default shell in macOS Catalina [online], The Verge, 4 czerwca 2019 [dostęp 2026-02-07] (ang.).
  5. ↑ Kali Linux 2020.4 Release [online], Kali Linux, 18 listopada 2020 [dostęp 2026-02-07] (ang.).
  6. ↑ Zsh Modules [online], zsh.sourceforge.io [dostęp 2026-02-07].
  7. ↑ man zshoptions (zsh options) [online], manpages.org [dostęp 2026-02-07].
  8. ↑ Zsh Mailing Lists [online], zsh.sourceforge.io [dostęp 2026-02-07].

Linki zewnętrzne