OK, ich habe ein ähnliches Problem wie: -bash: Applications / mvim: / bin / sh: schlechter Interpreter: Operation nicht erlaubt - aber es ist nicht dasselbe Problem. Ich bekomme das gleiche Ergebnis.
Ich habe bereits überprüft, dass es sich nicht um das com.apple.quarantine-Flag handelt.
Es sind nicht die Zeilenenden (das Skript wurde nur aus vi erstellt). Ich kann das Skript ausführen mit:
bash simpleshell.sh
Hier sind die Ergebnisse:
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$
UPDATE: Ich glaube nicht, dass das Dateisystem als noexec gemountet wird. Ich habe versucht, das Skript an drei verschiedenen Stellen auszuführen: / tmp, ~ und / source.
UPDATE2: Ok, nach mehr Graben - ich habe das Skript in / source erstellt, das ein gemountetes dmg ist. Dort habe ich xattr -l ausgeführt und nichts gefunden. Als ich das Skript auf ~ kopierte und xattr -l ausführte, hatte es das com.apple.quarantine xattr. Ich habe mir die Mount-Attribute für / source angesehen und festgestellt:
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
Wenn ich dieses dmg einbinde, wird es als Quarantäne festgelegt. Wie kann ich mount anweisen, es nicht mit der Quarantäneflagge zu mounten? Nachdem ich das Flag in ~ entfernt hatte, lief das Skript einwandfrei.
chmod +x file.sh; ./file.sh
. Möglicherweise ist das Dateisystem mit dem Flag "noexec" versehen.
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.