Co to jest zsh?

Autor: Opublikowano

W skrócie: Zsh, czyli Z shell, to powłoka systemowa — program, który interpretuje wpisywane polecenia i uruchamia wskazane zadania. Ułatwia pracę w terminalu dzięki rozbudowanemu uzupełnianiu komend, historii i możliwościom konfiguracji. Przydaje się przede wszystkim do interaktywnej pracy z systemem; nie trzeba go jednak znać, aby zacząć korzystać z terminala.

Zsh a terminal — czym się różnią?

Terminal to aplikacja zapewniająca miejsce do wpisywania poleceń i wyświetlania wyników. Powłoka działa wewnątrz tej aplikacji: odczytuje komendy, rozpoznaje ich składnię i zleca wykonanie operacji. W jednym terminalu możesz uruchomić różne powłoki, na przykład zsh lub Bash.

Gdy wpisujesz cd Dokumenty, zsh wykonuje własne polecenie zmiany katalogu. Gdy wpisujesz git status, uruchamia zewnętrzny program Git, o ile jest zainstalowany i dostępny w ścieżce wyszukiwania programów. To rozróżnienie jest istotne: instalacja zsh nie instaluje automatycznie narzędzi, których nazw używasz w poleceniach.

Zsh jest dostępny między innymi w systemach Linux i macOS. W macOS od wersji Catalina jest domyślną powłoką dla nowych kont użytkowników, choć konkretne konto może korzystać z innego ustawienia. W Windows można używać go na przykład w WSL, czyli środowisku pozwalającym uruchamiać narzędzia Linuksa.

Co zsh daje podczas codziennej pracy?

Największą korzyścią zsh jest ograniczenie ręcznego wpisywania powtarzalnych fragmentów poleceń. Wygoda zależy jednak od konfiguracji: świeża instalacja nie musi wyglądać ani zachowywać się tak jak terminal pokazywany w poradniku.

Do przydatnych możliwości należą:

Przykładowo, jeśli pracujesz w katalogu zawierającym folder projekt-sklepu, możesz wpisać cd proj i nacisnąć Tab. Powłoka spróbuje uzupełnić nazwę; gdy pasuje kilka katalogów, może pokazać dostępne możliwości. Podobne funkcje oferują też inne powłoki — przewagą zsh dla części użytkowników jest zakres konfiguracji i dostępnych rozszerzeń, a nie sama obecność uzupełniania.

Zsh czy Bash — co wybrać?

Bash to inna popularna powłoka, często spotykana w Linuksie i skryptach administracyjnych. Zsh i Bash obsługują wiele podobnych poleceń, ale nie są w pełni zgodne składniowo. Różnice dotyczą między innymi tablic, rozwijania zmiennych i dopasowywania nazw plików.

Praktyczny przykład: przy domyślnych ustawieniach zsh polecenie ls *.txt zgłosi błąd dopasowania, jeśli w katalogu nie ma plików z rozszerzeniem .txt. Bash domyślnie przekaże wtedy dosłowny argument *.txt do programu ls, który zgłosi brak takiego pliku. Pozornie identyczna komenda może więc zatrzymać się na innym etapie.

Do codziennej pracy wybierz powłokę, w której łatwiej ci wykonywać zadania. Do skryptów dobieraj interpreter świadomie. Skrypt zaczynający się od #!/bin/bash wskazuje Bash jako interpreter przy bezpośrednim uruchomieniu. Korzystanie z zsh w terminalu nie oznacza, że trzeba przepisywać taki skrypt; uruchomienie go poleceniem zsh skrypt.sh może natomiast spowodować błędy zgodności.

Jak sprawdzić i uruchomić zsh?

Najpierw sprawdź, czy program jest dostępny:

zsh --version

Jeżeli otrzymasz numer wersji, możesz uruchomić zsh na próbę, wpisując zsh. Polecenie exit zakończy tę sesję i przywróci poprzednią powłokę. Nie zmienia to domyślnych ustawień konta.

Jeśli system nie znajduje programu, w Linuksie zainstaluj go przez menedżer pakietów swojej dystrybucji. Przykładowo w Debianie i Ubuntu służy do tego sudo apt install zsh. Komenda wymaga uprawnień administracyjnych; w innej dystrybucji sprawdź właściwą procedurę w jej oficjalnej dokumentacji.

Często polecane echo $SHELL pokazuje zwykle ustawioną powłokę logowania, a niekoniecznie tę działającą w bieżącej sesji. Po uruchomieniu zsh możesz sprawdzić echo $ZSH_VERSION — w zsh ta zmienna zawiera numer jego wersji.

Domyślną powłokę konta można zwykle zmienić narzędziem chsh. Zanim to zrobisz, potwierdź ścieżkę programu oraz zasady swojego systemu: powłoka może wymagać wpisu na liście /etc/shells, a konta firmowe mogą mieć ograniczenia administracyjne.

Konfiguracja zsh i rola Oh My Zsh

Podstawowym plikiem konfiguracji interaktywnych sesji jest zwykle ~/.zshrc, gdzie ~ oznacza katalog domowy użytkownika. Możesz umieścić w nim aliasy, czyli skróty poleceń, oraz ustawienia uzupełniania. Prosty początek wygląda tak:

alias ll='ls -lh'
autoload -Uz compinit
compinit

Alias umożliwia wpisanie ll zamiast ls -lh, a kolejne linie inicjalizują system uzupełniania. Przed edycją istniejącego pliku zrób jego kopię i sprawdź, czy podobne ustawienia już się w nim znajdują. Zmiany najłatwiej przetestować w nowej sesji zsh.

Oh My Zsh to opcjonalny zestaw konfiguracji, motywów i wtyczek, a nie sama powłoka. Kolorowe podpowiedzi podczas pisania czy podświetlanie składni często pochodzą z dodatkowych rozszerzeń. Nie są automatycznie dostępne po zainstalowaniu zsh.

Na początek uruchom zsh bez zmiany domyślnej powłoki i wykonaj kilka swoich zwykłych zadań. Dodawaj rozszerzenia dopiero wtedy, gdy potrafisz wskazać, jaką konkretną czynność mają ułatwić; przed uruchomieniem instalatora sprawdź jego źródło i zakres zmian.

Zobacz też: Co to jest AGI?

Przeczytaj także

Dowiedz się, jak PHP-FPM obsługuje żądania PHP, czym różni się od serwera WWW i jak dobrać ustawienia procesów do ruchu oraz zasobów hostingu.
Poznaj BIND, otwarte oprogramowanie serwera DNS: sprawdź, jak obsługuje domeny, czym różnią się jego role i kiedy warto samodzielnie go wdrożyć.
Poznaj najważniejsze Security Headers, ich rolę w ochronie strony oraz sposób sprawdzania i wdrażania nagłówków bez blokowania potrzebnych funkcji.