PATH to zmienna środowiskowa, która przechowuje listę katalogów oddzielonych dwukropkiem. Gdy wpisujesz w terminalu jakieś polecenie, powłoka (np. Bash czy Zsh) przegląda te katalogi po kolei i szuka w nich pliku wykonywalnego o pasującej nazwie. Dzięki temu możesz napisać po prostu ls albo git, zamiast za każdym razem podawać pełną ścieżkę w stylu /usr/bin/ls.
Jak to działa
Kolejność katalogów w PATH ma znaczenie. Powłoka przeszukuje je od lewej do prawej i zatrzymuje się na pierwszym dopasowaniu. Jeśli dwa katalogi zawierają program o tej samej nazwie, wygra ten, który stoi wcześniej. To dlatego menedżery wersji (np. nvm czy pyenv) wpychają swoje katalogi na początek PATH — chcą, żeby ich wersja Node czy Pythona przykryła systemową.
Wartość zobaczysz komendą echo $PATH. Dostaniesz coś w stylu /usr/local/bin:/usr/bin:/bin. Żeby sprawdzić, który dokładnie plik zostanie uruchomiony dla danej nazwy, użyj which git albo dokładniejszego type -a git — to drugie pokaże wszystkie dopasowania i aliasy.
Przykład z praktyki
Klasyk: instalujesz narzędzie CLI, na przykład binarkę do katalogu ~/.local/bin, wpisujesz jego nazwę i dostajesz command not found. Plik jest, ale tego katalogu nie ma w PATH. Dopisujesz go (zwykle w ~/.bashrc lub ~/.zshrc):
export PATH="$HOME/.local/bin:$PATH"
Zwróć uwagę na $PATH na końcu — dopisujesz nowy katalog, a starą wartość zachowujesz. Po edycji odśwież powłokę przez source ~/.bashrc albo otwórz nowy terminal.
Częste błędy i mity
- Nadpisanie zamiast dopisania.
export PATH="/mój/katalog"bez doklejenia:$PATHkasuje resztę. Nagle nawetlsprzestaje działać — bo powłoka nie wie już, gdzie go szukać. - Kropka w PATH. Dorzucanie
.(bieżący katalog) to ryzyko bezpieczeństwa — w cudzym katalogu możesz odpalić podstawiony plik zamiast prawdziwego polecenia. - Zmiana znika po restarcie.
exportwpisany w terminalu działa tylko w tej sesji. Trwałą zmianę robisz w pliku konfiguracyjnym powłoki.
Pamiętaj też, że PATH jest dziedziczony przez procesy potomne, więc to, co ustawisz w powłoce, zobaczą też uruchamiane z niej programy.
Pojęcia powiązane
Zmienne środowiskowe, export, echo, which, type, pliki .bashrc i .zshrc, powłoka (shell), chmod +x (nadawanie praw wykonywania).