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


8

Sono su OSX Snow Leopard.

Ecco il contenuto completo di grr.sh:

#!/bin/sh

echo wow

Quando provo ad eseguirlo dal terminale:

$ 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ò il permesso eseguibile, quindi riprovare:

$ 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 funzionerà se uso esplicitamente bash? Cambierò il contenuto del file in:

#!/bin/bash

echo wow

E ottengo gli stessi esatti risultati. Cosa avrei potuto rompere ?!

Un'ultima cosa! Nel caso in cui tu sia curioso ...

$ which sh
/bin/sh

Risposte:


19

Assolutamente niente. Solo gli eseguibili in una delle directory in $PATHpossono essere eseguiti direttamente e .(di solito) non sono mai presenti $PATH. Specificare il percorso dell'eseguibile, ad es ./grr.sh.


3
+1. Inoltre, la directory corrente si trova sul percorso sui sistemi Windows per impostazione predefinita e ha la massima priorità. Questa differenza cruciale è probabilmente la fonte della confusione del richiedente.
Afrazier

Prima eri di 9 secondi! Grazie!
Chiusura Cowboy

Hai salvato il mio macbook
vietnguyen09 il

7

La posizione di grr.sh è nella $PATHvariabile? In caso contrario, dovrai inserire:

./grr.sh

se ti trovi nella stessa cartella di grr.sh. In caso contrario, fornire il percorso completo ad esso.


6

le autorizzazioni per il file sono errate. Prova i seguenti comandi:

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

0

Sì, e cosa significa ./grr.sh, è che in questa directory, esegui il comando grr.sh. Il singolo . significa nella directory di lavoro. In caso contrario, la shell presuppone che si stia tentando di eseguire un comando in $ PATH.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.