„Polecenie nie znaleziono” podczas uruchamiania skryptu powłoki. Co złamałem?


8

Jestem na OSX Snow Leopard.

Oto pełna treść grr.sh:

#!/bin/sh

echo wow

Kiedy próbuję uruchomić go z terminala:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

W porządku. Słusznie. Daję mu uprawnienia do wykonywania, a następnie spróbuj ponownie:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

Hmmm. Może zadziała, jeśli użyję basha jawnie? Zmienię zawartość pliku na:

#!/bin/bash

echo wow

I otrzymuję dokładnie takie same wyniki. Co mogłem złamać ?!

Ostatnia rzecz! Jeśli jesteś ciekawy ...

$ which sh
/bin/sh

Odpowiedzi:


19

Absolutnie niczego. Tylko pliki wykonywalne w jednym z katalogów w $PATHmogą być uruchamiane bezpośrednio i .(zwykle) nigdy nie są uruchamiane $PATH. Podaj ścieżkę do pliku wykonywalnego, tj ./grr.sh.


3
+1. Warto również zauważyć, że bieżący katalog domyślnie znajduje się na ścieżce w systemach Windows i ma najwyższy priorytet. Ta zasadnicza różnica jest prawdopodobnie przyczyną zamieszania pytającego.
afrazier

Byłeś pierwszy o 9 sekund! Dziękuję Ci!
Zamknięcie Cowboy

Zapisujesz mojego
macbooka

8

Czy lokalizacja grr.sh w $PATHzmiennej? Jeśli nie, musisz wprowadzić:

./grr.sh

jeśli jesteś w tym samym folderze co grr.sh. Jeśli nie, podaj pełną ścieżkę do niego.


7

uprawnienia do pliku są nieprawidłowe. Wypróbuj następujące polecenia:

  $ chmod 777 file.sh
  $ ./file.sh

0

Tak, a co oznacza ./grr.sh, oznacza to, że w tym katalogu uruchom polecenie grr.sh. Pojedynczy . oznacza w katalogu roboczym. W przeciwnym razie twoja powłoka zakłada, że ​​próbujesz uruchomić polecenie w $ PATH.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.