2012-03-31 4 views
24

Sto cercando di eseguire questo script su Mac OS 10.7 (Lion) e sto ottenendo l'errore:Mac OS:/usr/bin/env: cattivo interprete: Operation not permitted

$ bbcolors 
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted 

I Ho eseguito con successo questo script su altri miei Mac. È solo this script scaricato e non modificato da Daring Fireball.

Ho trovato this person con un problema molto simile ma la risposta accettata era che il file system aveva un'opzione 'noexe' sul monte. Sono abbastanza sicuro che non è il mio caso perché ho appena ottenuto in/usr/local/bin/e altre cose lì funzionano bene (anche non viene eseguito da altri posti o da altri utenti incluso root) .

$ which bbcolors 
/usr/local/bin/bbcolors 
$ ls -l /usr/local/bin/bbcolors 
[email protected] 1 nick staff 9751 Mar 30 19:09 /usr/local/bin/bbcolors 

È uno script Perl non un binario compilato, non quello che dovrebbe importare. Ecco alcune informazioni in più per quello che vale:

$ cat /usr/local/bin/bbcolors |head -n 1 
#!/usr/bin/env perl 
$ which perl 
/usr/bin/perl 
$ env | grep PATH 
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 
+1

Hai coperto la maggior parte delle basi normali per ciò che potrebbe andare storto; molto bene. Cosa succede quando si esegue 'perl -v'? Cosa appare dopo le righe di commento iniziali nello script Perl ('bbcolors')?Inoltre, '@' dopo i permessi significa che ci sono alcune informazioni sugli attributi ausiliari per il file; hai indagato su questo (forse con 'ls - @')? –

+0

Ho risolto il problema con 'xattr -r com.apple.quarantine/file/path' Risponderò alla mia domanda, ma non ho abbastanza rep per farlo per alcune ore. – Nick

+0

'xattr -d com.apple.quarantine/usr/local/bin/bbcolors'? ('-r' significa 'ricorsivo';' -d' significa 'cancella'.) Continuo a dimenticare cosa viene chiamato quel comando. –

risposta

47

V'è mai capitato di aprire/salvare il file in TextEdit?

Questo può introdurre i metadati del filesystem (attributo di quarantena) leading to the symptom you describe.

Prova:

xattr -l /usr/local/bin/bbcolors 

e

xattr -d com.apple.quarantine /usr/local/bin/bbcolors 

se si vede l'attributo di quarantena.

+3

Sì, non ho potuto rispondere alla mia domanda, ma hai le informazioni giuste dai miei miei commenti sopra. FWIW: vale anche la pena fare un 'ls -al @' sul file per vedere 'com.apple.quarantine'. – Nick

+2

Ha. Ho trovato quella soluzione * senza * leggendo i tuoi commenti. Questo mi insegnerà a rinfrescare più spesso. – pilcrow

+0

Questo ha risolto il mio problema, grazie –

1
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted 

Vuol /usr/bin/env esiste? Puoi correrlo? Eseguito da solo, dovrebbe scaricare le variabili di ambiente sullo stdout.

È possibile sostituire tranquillamente:

#!/usr/bin/env perl 

Con il percorso completo perl binario di scelta, per esempio:

#!/usr/bin/perl 
12

di Pilcrow è corretta, tuttavia richiamo la vostra attenzione sul fatto che, se si sta lavorando un'immagine del disco con, il problema può essere molto confusa, come l'attributo com.apple.quarantine sembra essere ereditato dal file immagine del disco sui file all'interno (grazie a febeling at Apple dev forums per averlo notato!).

Per risolvere il problema, è necessario rimuovere l'attributo di quarantena dall'immagine del disco:

xattr -d com.apple.quarantine /path/to/disk/image 

e poi espelle e rimontare l'immagine del disco. Quindi i tuoi file saranno nuovamente puliti.

+1

+1 Grazie! Mi hai salvato la giornata. – ilmiacs

+1

+1 Grazie! Ho salvato anche la mia giornata! –