zsh (Z Shell) to interaktywna powłoka uniksowa i język skryptowy, w dużej mierze zgodny z bash, ale rozbudowany o wygody, których w klasycznym shellu próżno szukać: inteligentne autouzupełnianie, podpowiedzi, potężne dopasowywanie wzorców (globbing) i bezbolesną personalizację. Stworzył ją Paul Falstad w 1990 roku, a dziś znasz ją głównie z tego, że od macOS Catalina (10.15, 2019) jest domyślną powłoką na Macach — wcześniej rządził tam bash.
W praktyce zsh robi to samo co bash: uruchamia programy, obsługuje potoki (|), przekierowania, zmienne środowiskowe i pętle. Różnica jest w komforcie codziennej pracy. Wciśniesz Tab i dostajesz nie tylko nazwy plików, ale też flagi komend, gałęzie gita czy hosty z ~/.ssh/config. Literówka w cd /etc/ngnix? zsh zaproponuje poprawkę. Do tego rozszerzony globbing, np. ls **/*.log przeszukuje rekurencyjnie całe drzewo katalogów jednym wzorcem.
Gdzie to spotkasz w praktyce
Najczęstszy scenariusz dla osoby uczącej się: świeży Mac albo serwer, na którym chcesz mieć przyjemniejszy terminal. Instalujesz framework Oh My Zsh i nagle masz motywy, kolory oraz dziesiątki wtyczek (np. autouzupełnianie dla git, docker, kubectl). Klasyczny zestaw startowy:
chsh -s $(which zsh)— ustawia zsh jako Twoją powłokę logowania.~/.zshrc— plik konfiguracyjny, odpowiednik.bashrc; tu trzymasz aliasy, zmienne i wtyczki.- Popularne dodatki to
zsh-autosuggestions(podpowiada komendy z historii w locie) izsh-syntax-highlighting(koloruje polecenie, zanim je wykonasz).
Częste błędy i mity
Mit: zsh jest „wolny”. Sam shell jest szybki — spowalnia go dopiero przeładowany .zshrc z setką wtyczek i ciężkim motywem typu Powerlevel10k bez cache. Jak start terminala się wlecze, zacznij od czyszczenia konfiguracji, nie od zmiany powłoki.
Pułapka zgodności: zsh jest w większości kompatybilny z bashem, ale nie w 100%. Skrypt z linią #!/bin/bash uruchamiaj bashem, a nie „bo i tak działa”. Różni je m.in. indeksowanie tablic (zsh liczy od 1, bash od 0) i sposób dzielenia słów ze zmiennych. Pisząc skrypty na produkcję, deklaruj powłokę jawnie w shebangu.
Nie myl powłoki z terminalem. zsh to program interpretujący komendy; iTerm2, Terminal czy Konsole to tylko okna, w których on działa.
Pojęcia powiązane: bash, sh (POSIX shell), fish, Oh My Zsh, Powerlevel10k, .zshrc, shell (powłoka) i emulator terminala.