web-dev-qa-db-fra.com

Mac OS: / usr / bin / env: mauvais interprète: opération non autorisée

J'essaie d'exécuter ce script sur Mac OS 10.7 (Lion) et j'obtiens l'erreur:

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

J'ai réussi à exécuter ce script sur d'autres Mac à moi. C'est juste ce script téléchargé et non modifié depuis Daring Fireball.

J'ai trouvé cette personne avec un problème très similaire mais la réponse acceptée était que le système de fichiers avait une option 'noexe' au montage. Je suis presque sûr que ce n'est pas le cas pour moi car je l'ai juste dans/usr/local/bin/et d'autres choses là-dedans fonctionnent bien (cela ne fonctionne pas non plus depuis d'autres endroits ou comme d'autres utilisateurs, y compris 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

C'est un script Perl et non un binaire compilé, ce n'est pas important. Voici quelques informations supplémentaires pour ce que cela vaut:

$ 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
44
Nick

Vous est-il arrivé d'ouvrir/enregistrer le fichier dans TextEdit?

Cela peut introduire des métadonnées de système de fichiers (attribut de quarantaine) conduisant au symptôme que vous décrivez .

Essayer:

xattr -l /usr/local/bin/bbcolors

et

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

si vous voyez l'attribut de quarantaine.

86
pilcrow

la réponse de pilcrow est correcte, mais j'attire votre attention sur le fait que si vous travaillez avec une image disque, le problème peut être très déroutant, car l'attribut com.Apple.quarantine semble être hérité du fichier image disque dans les fichiers à l'intérieur (merci à febeling at Apple dev forums pour l'avoir remarqué!).

Pour résoudre le problème, vous devez supprimer l'attribut de quarantaine de l'image disque:

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

puis éjectez et remontez l'image du disque. Ensuite, vos fichiers seront à nouveau nettoyés.

14
KPM

J'avais résolu ce problème.Ouvrez le fichier de commandes avec TextEdit puis enregistrez-le.

Plus d'informations: opération résolue non autorisée

6
Javen.Yang
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

Est-ce que /usr/bin/env existe? Peux-tu le courir? Exécutée seule, elle devrait vider vos variables d'environnement sur stdout.

Vous pouvez remplacer en toute sécurité:

#!/usr/bin/env Perl

Avec le chemin complet vers votre Perl binaire de choix, par exemple:

#!/usr/bin/Perl
0
larsks