W powłoce Linuksa (np. bash) wpisanie nazwy pliku, takiej jak nazwa.py, nie oznacza automatycznie uruchomienia pliku z bieżącego katalogu. Powłoka wyszukuje polecenia głównie w katalogach wymienionych w zmiennej środowiskowej PATH. Ponieważ bieżący katalog z reguły nie znajduje się w PATH, aby uruchomić plik leżący "tu, gdzie jesteś", podaje się ścieżkę względną: ./nazwa.py. Prefiks ./ mówi wprost: "uruchom plik z bieżącego katalogu".
Odpowiedź ./nazwa.py jest więc właściwa jako standardowy sposób wywołania programu z katalogu roboczego. W praktyce trzeba pamiętać o jeszcze dwóch warunkach systemowych, które często pojawiają się na zajęciach i w pracy technika:
- plik musi mieć ustawione prawo wykonywania (np. przez chmod),
- skrypt musi wskazywać interpreter (często przez linię "shebang") albo zostać uruchomiony jawnie przez interpreter.
Dlaczego pozostałe propozycje są błędne w typowym scenariuszu egzaminacyjnym?
- .nazwa.py to po prostu nazwa pliku zaczynająca się od kropki, która w Linuksie oznacza zwykle plik ukryty. To nie jest składnia uruchamiania programu.
- nazwa.py bez ./ zadziała tylko wtedy, gdy system potrafi znaleźć takie polecenie w PATH (albo gdy użytkownik dodał bieżący katalog do PATH). Na stanowiskach produkcyjnych jest to raczej wyjątek niż reguła.
- .
azwa.py używa separatora ścieżek typowego dla Windows. W Linuksie separatorem katalogów jest ukośnik "/", więc taki zapis nie odpowiada standardowej składni ścieżki.
Wskazówka egzaminacyjna: jeśli w pytaniu pojawia się "uruchomić program z bieżącego katalogu", najczęściej szukasz odpowiedzi z ./. Jeśli pojawia się "uruchomić skrypt Pythona" i brak praw wykonywania, wtedy w praktyce często używa się uruchomienia przez interpreter, ale to wymaga doprecyzowania w treści zadania.