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 ne s'agit pas de l'indicateur com.apple.quarantine.
Ce ne sont pas les fins de ligne (le script a été créé uniquement à 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 crois pas que ce soit le système de fichiers monté en tant que noexec. J'ai essayé d'exécuter le script à 3 endroits différents: / tmp, ~ et / source.
UPDATE2: Ok, après plus de fouilles - j'ai créé le script dans / source, qui est un dmg monté. C'est là que j'ai exécuté xattr -l et n'ai rien trouvé. Lorsque j'ai copié le script sur ~ et exécuté xattr -l, il y avait alors 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 l'indicateur de quarantaine? Une fois que j'ai supprimé le drapeau dans ~, le script s'est bien déroulé.
chmod +x file.sh; ./file.sh
. Peut-être que ce système de fichiers est monté avec le drapeau "noexec".
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.