OK, j'ai un problème similaire : -bash : Applications/mvim : /bin/sh : mauvais interprète : Opération non autorisée - mais ce n'est pas le même problème. J'obtiens le même résultat.
J'ai déjà vérifié qu'il s'agit de no le drapeau com.apple.quarantine.
C'est no les fins de ligne (script a été créé à partir de vi). Je peux exécuter le script en utilisant :
bash simpleshell.sh
Voici les résultats :
fawkes:tmp kylar$ vi simpleshell.sh
fawkes:tmp kylar$ chmod +x simpleshell.sh
fawkes:tmp kylar$ ./simpleshell.sh
-bash: ./simpleshell.sh: /bin/bash: bad interpreter: Operation not permitted
fawkes:tmp kylar$ cat simpleshell.sh
#!/bin/bash
export FOO=Hey
echo $FOO
fawkes:tmp kylar$ which bash
/bin/bash
fawkes:tmp kylar$ bash simpleshell.sh
Hey
fawkes:tmp kylar$ xattr -l simpleshell.sh
fawkes:tmp kylar$
MISE À JOUR : je ne pense pas que ce soit le système de fichiers qui soit monté en tant que noexec. J'ai essayé d'exécuter le script à 3 endroits différents : /tmp, ~, et /source.
MISE A JOUR 2 : Ok, après plus de recherches - j'ai créé le script à l'intérieur de /source, qui est un dmg monté. C'est là que j'ai lancé xattr -l et je n'ai rien trouvé. Lorsque j'ai copié le script dans ~ et que j'ai lancé xattr -l, j'ai trouvé le xattr com.apple.quarantine. Sur une intuition, j'ai regardé les attributs de montage pour /source et j'ai trouvé :
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
Donc quand je monte ce dmg, il est mis en quarantaine. Comment puis-je dire à mount de ne pas le monter avec le drapeau de quarantaine ? Une fois que j'ai supprimé le drapeau en ~, le script s'est exécuté correctement.