Jak pominąć „./” podczas uruchamiania skryptów w bieżącym katalogu

10

W niektórych samouczkach przez Internet mogą uruchomić skrypt w bieżącym katalogu bez wykonywania:

./script

Jak to pomijasz? Używam CentOS 5.6 x64. Chcę to uruchomić w ten sposób

script

Aivan Monceller
źródło
3
Zauważ, że prawie zawsze jest to zły pomysł, szczególnie dla użytkownika root.
David Schwartz
1
Jaki jest zresztą cały cel / historia ./?
Pete,
Jestem tylko ciekawy, dlaczego zawsze musi mieć ./
Aivan Monceller,
Ostatni komentarz może być osobnym pytaniem IMHO - ważne jest, aby zrozumieć ogólne zasady działania programów!
rozcietrzewiacz
4
@Pete (i Aivan): W systemie Linux / UNIX powłoka uruchamia programy tylko wtedy, gdy zna ścieżkę do nich (czy to przy użyciu określonej ścieżki, czy przeszukując zmienną PATH). Nie zakłada się, że chcesz przeszukiwać bieżący katalog tak jak Windows. Przeszukuje dokładnie to, o co go poprosisz, za pomocą zmiennej PATH. „.” jest odniesieniem do bieżącego katalogu. Więc kiedy wpiszesz „./script.sh”, podasz mu ścieżkę.
Kasius

Odpowiedzi:

26

Którykolwiek z:

  1. Dodaj bieżący katalog roboczy do PATH: PATH=${PATH}:.(jest to uważane za zagrożenie bezpieczeństwa)
  2. Jawnie dodaj ścieżkę zawierającą skrypt do zmiennej PATH (nie ma zagrożenia bezpieczeństwa, jeśli dostęp do zapisu w tym katalogu jest ograniczony)
  3. Umieść skrypt we właściwym miejscu, w którym PATH już wskazuje (~ / bin, / usr / local / bin, ...)

Ostatnia opcja jest prawdopodobnie najlepsza.

Nils
źródło