Mac OS: /usr/bin/env: mal intérprete: Operación no permitida


Estoy tratando de ejecutar este script en Mac OS 10.7 (Lion) y estoy recibiendo el error:

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

He ejecutado con éxito este script en otros Macs míos. Es solo este script descargado y sin modificar de Daring Fireball.

Encontré esta persona con un problema muy similar, pero la respuesta aceptada fue que el sistema de archivos tenía una opción 'noexe' en mount. Estoy bastante seguro de que no es el caso para mí porque lo tengo en / usr / local / bin / y otras cosas en no funciona bien (tampoco se ejecuta desde otros lugares o como otros usuarios incluyendo root).

$ which bbcolors
/usr/local/bin/bbcolors
$ ls -l /usr/local/bin/bbcolors 
-rwxr-xr-x@ 1 nick  staff  9751 Mar 30 19:09 /usr/local/bin/bbcolors

Es un script Perl no un binario compilado, no es que eso deba importar. Aquí hay información adicional para lo que vale la pena:

$ 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
Author: Community, 2012-03-31

4 answers

¿Por casualidad abriste / guardaste el archivo en TextEdit?

Que puede introducir metadatos del sistema de archivos (atributo de cuarentena) que conducen al síntoma que describe.

Intenta:

xattr -l /usr/local/bin/bbcolors

Y

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

Si ve el atributo quarantine.

 49
Author: pilcrow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-31 03:21:55

La respuesta de Pilcrow es correcta, sin embargo, llamo su atención sobre el hecho de que si está trabajando con una imagen de disco, el problema puede ser muy confuso, como el com.manzana.el atributo quarantine parece heredarse del archivo de imagen de disco a los archivos dentro (gracias a febeling en los foros de Apple dev por darse cuenta de eso!).

Para resolver el problema, debe eliminar el atributo quarantine 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 sus archivos estarán limpios de nuevo.

 12
Author: KPM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-08 16:11:58

Había resuelto este problema.Abra el archivo de comandos con TextEdit y luego guárdelo.

Más información: Operación resuelta no permitida

 4
Author: Javen.Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-13 02:44:39
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

¿Existe /usr/bin/env? ¿Puedes ejecutarlo? Ejecutado por sí mismo debería volcar sus variables de entorno a stdout.

Puede reemplazar de forma segura:

#!/usr/bin/env perl

Con el camino completo a su perl binario de elección, por ejemplo:

#!/usr/bin/perl
 1
Author: larsks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-31 03:05:23