PATH

Zmienna środowiskowa zawierająca listę katalogów, w których powłoka szuka programów wykonywalnych. Dzięki niej można uruchamiać polecenia bez podawania pełnej ścieżki.

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 :$PATH kasuje resztę. Nagle nawet ls przestaje 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. export wpisany 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).