pwd (od print working directory) wypisuje pełną, bezwzględną ścieżkę katalogu, w którym aktualnie się znajdujesz. To pierwsza komenda, po którą sięgasz, gdy zgubisz się w drzewie katalogów albo gdy skrypt musi wiedzieć, skąd został uruchomiony. Działa zawsze i wszędzie, bo w Bashu jest wbudowana w powłokę (a w razie potrzeby istnieje też /bin/pwd).
Składnia i najważniejsze opcje
Podstawowa składnia jest banalnie prosta:
pwd [-LP]
-L— tryb logiczny (domyślny): wypisuje ścieżkę zgodną ze zmienną środowiskową$PWD, czyli z dowiązaniami symbolicznymi pozostawionymi tak, jak do nich weszłeś.-P— tryb fizyczny: rozwija wszystkie dowiązania symboliczne i pokazuje rzeczywistą ścieżkę na dysku.--help— wyświetla krótką pomoc (dotyczy wersji z coreutils, czyli/bin/pwd).--version— pokazuje wersję polecenia (również tylko w wariancie z coreutils).
To w zasadzie cały arsenał. pwd nie przyjmuje argumentów-ścieżek — od podawania katalogów jest cd.
Przykłady użycia
pwd— wypisuje bieżący katalog, np./home/jan/projekty. Najczęstsze użycie, gdy chcesz się upewnić, gdzie jesteś.pwd -P— jeśli/home/jan/projektyjest dowiązaniem, pokaże prawdziwą lokalizację, np./mnt/dane/projekty.pwd -L— wymusza tryb logiczny i pokaże ścieżkę z dowiązaniem nietkniętym (przydatne, gdy zmieniłeś domyślne zachowanie powłoki).cd /var/log && echo "Jestem w: $(pwd)"— wstawienie wynikupwddo komunikatu; klasyka w skryptach.SCRIPT_DIR=$(pwd)— zapisanie bieżącej ścieżki do zmiennej, żeby później do niej wrócić lub budować ścieżki względem niej.
Częste błędy i pułapki
Największa pułapka to dowiązania symboliczne. Domyślny -L pokaże ścieżkę „taką, jaką ją przeszedłeś”, a nie fizyczną. Jeśli skrypt liczy na realną lokalizację plików, używaj -P, bo inaczej dwie ścieżki będą wyglądać tak samo, a wskazywać różne miejsca.
Druga rzecz: w Bashu pwd to builtin powłoki, więc opcje --help i --version obsługuje wersja z /bin/pwd (coreutils), a nie builtin. Jeśli chcesz mieć pewność co do wariantu, wywołaj /bin/pwd wprost. Na macOS i innych systemach BSD /bin/pwd również wspiera -L i -P, ale nie ma długich opcji --help.
I jeszcze drobiazg: nie myl pwd ze zmienną $PWD — zmienna bywa nieaktualna, jeśli ktoś ją ręcznie nadpisał, a komenda zawsze sprawdza stan faktycznie.
Powiązane komendy: cd, ls, realpath, readlink, dirname, basename.