2012-03-31 18 views
24

Estoy tratando de ejecutar este script en Mac OS 10.7 (Lion) y estoy consiguiendo el error:Mac OS:/usr/bin/env: mala intérprete: Operación no permitida

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

I He ejecutado con éxito esta secuencia de comandos en otras Macs mías. Es solo this script descargado y sin modificaciones de Daring Fireball.

Encontré this person con un problema muy similar, pero la respuesta aceptada fue que el sistema de archivos tenía una opción 'noexe' en el montaje. Estoy bastante seguro de que ese no es el caso para mí porque lo tengo en/usr/local/bin/y otras cosas allí funcionan bien (tampoco se ejecuta desde otros lugares o como otros usuarios, incluido el directorio raíz) .

$ 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 

Es un script de Perl no es un binario compilado, eso no debería importar. Aquí hay algo de información extra para lo que 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

Has cubierto la mayoría de las bases normales para lo que podría estar yendo mal; bien hecho. ¿Qué sucede cuando ejecutas 'perl -v'? ¿Qué aparece después de las líneas de comentarios iniciales en el script de Perl ('bbcolors')?Además, el '@' después de los permisos significa que hay alguna información de atributo auxiliar para el archivo; ¿Has investigado que eso es (tal vez con 'ls - @')? –

+0

He resuelto el problema con 'xattr -r com.apple.quarantine/file/path' Responderé a mi propia pregunta pero no tengo suficientes representantes para hacerlo durante unas horas. – Nick

+0

'xattr -d com.apple.quarantine/usr/local/bin/bbcolors'? ('-r' significa 'recursivo';' -d' significa 'eliminar'.) Sigo olvidando cómo se llama ese comando. –

Respuesta

47

se te ha ocurrido para abrir/guardar el archivo en edición de textos?

que puede introducir metadatos del sistema de archivos (atributo de cuarentena) leading to the symptom you describe.

Probar:

xattr -l /usr/local/bin/bbcolors 

y

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

si ves el atributo de cuarentena.

+3

Sí, no pude responder mi propia pregunta, pero tiene la información correcta de mis comentarios anteriores. FWIW: también vale la pena hacer un 'ls -al @' en el archivo para ver 'com.apple.quarantine'. – Nick

+2

Ha. Encontré esa solución * sin * leer tus comentarios. Eso me enseñará a refrescarme más a menudo. – pilcrow

+0

Esto resolvió mi problema, gracias –

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

¿Existe /usr/bin/env? ¿Puedes ejecutarlo? Ejecutar solo debería volcar las variables de entorno a stdout.

Se puede reemplazar con seguridad:

#!/usr/bin/env perl 

Con la ruta completa de la perl binario de elección, por ejemplo:

#!/usr/bin/perl 
12

de Pilcrow es correcto, sin embargo llamar su atención sobre el hecho de que si se está trabajando con una imagen de disco, el problema puede ser muy confuso, como el atributo com.apple.quarantine parece ser heredado del archivo de imagen del disco a los archivos dentro (¡gracias a febeling at Apple dev forums por notar eso!).

Para resolver el problema, usted tiene que quitar el atributo de cuarentena de la imagen de disco:

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

y luego expulsar y volver a montar la imagen de disco. Entonces tus archivos estarán limpios de nuevo.

+1

+1 ¡Gracias! Salvaste mi día. – ilmiacs

+1

+1 ¡Gracias! Me salvó el día también! –

Cuestiones relacionadas