zsh

Rozbudowana powłoka zgodna z bashem, ceniona za autouzupełnianie, podpowiedzi i możliwości personalizacji (np. przez Oh My Zsh). Domyślna powłoka w macOS.

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) i zsh-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.