"Comando non trovato" quando si esegue uno script di shell. Cosa ho fatto?

Sono sul OSX Snow Leopard.

Ecco il contenuto completo di grr.sh :

 #!/bin/sh echo wow 

Quando cerco di eseguirlo dal terminal:

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

Va bene. Giusto. Gli darò l'authorization eseguibile, quindi riprova:

 $ 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. Forse functionrà se uso bash esplicitamente? Cambierò il contenuto del file a:

 #!/bin/bash echo wow 

E ottengo gli stessi risultati. Cosa potrei rompere ?!

Un'ultima cosa! Se sei curioso …

 $ which sh /bin/sh 

Assolutamente niente. Solo gli eseguibili in una delle directory di $PATH possono essere eseguiti direttamente e . è (di solito) mai in $PATH . Specificare il path dell'eseguibile, vale a dire ./grr.sh .

La posizione di grr.sh nella variabile $PATH ? Se no, dovrai inserire:

 ./grr.sh 

se si è nella stessa cartella di grr.sh. In caso contrario, fornire il path completo.

le autorizzazioni per il file sono sbagliate. Provare i seguenti comandi:

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

Sì, e cosa ./grr.sh significa, è che in questa directory, eseguire il command grr.sh. Il singolo . significa nella directory di lavoro. Altrimenti, la shell presume che si sta tentando di eseguire un command nel tuo $ PATH.