Nowe posty

Autor Wątek: roznica miedzy wywolaniem skryptu . ./ a ./  (Przeczytany 2146 razy)

akiller

  • Gość
roznica miedzy wywolaniem skryptu . ./ a ./
« dnia: 2009-07-28, 16:30:08 »
witam
mam problem szukam odpowiedzi na temat roznicy jak w temacie
kiedy wpisuje polecenie ./skrypt pojawia mi sie cos takiego:

bash: ./skrypt: /usr/bin/ksh: bad interpreter: No such file or directory

a jak wpisuje . ./skrypt wszystko dziala dobrze i wlasnie tu widac ze jest roznica miedzy tymi poleceniami tylko jaka ?? i co to oznacza ??

ZipoKing

  • Gość
roznica miedzy wywolaniem skryptu . ./ a ./
« Odpowiedź #1 dnia: 2009-07-28, 17:11:06 »
Kiedy wpisujesz ./skrypt Linux traktuje ten plik jako plik programu. Po dwóch znakach na początku #! rozpoznaje iż jest to skrypt powłoki i próbuje uruchomić interpreter dla danego skryptu (podany w pierwszej linii, u ciebie zapewnie jest: #!/usr/bin/ksh). Nie masz zainstalowanego ksh, więc stąd ten błąd.
Z kolei uruchamiając skrypt przez . ./skrypt mówisz powłoce iż w pliku tym jest skrypt, który powinien wykonać; żaden proces nie jest uruchamiany a bieżąca powłoka próbuje wykonać zawarty w pliku skrypt (bez uruchamiania kolejnego procesu). Doskonały przykład który zobrazuje całą sytuację:
Kod: bash [Zaznacz]
#!/bin/bash
echo $$

Skrypt ten wyświetli ID bieżącego procesu; jeżeli wywołasz go w "pierwszy" sposób, za każdym razem dostaniesz inną wartość (uruchamiany jest nowy proces powłoki), zaś przy wywołaniu drugim sposobem cały czas będziesz otrzymywał tą samą wartość - ID powłoki, na której obecnie pracujesz.