OK, tengo un problema similar a: -bash: Aplicaciones / mvim: / bin / sh: mal intérprete: Operación no permitida , pero no es el mismo problema. Estoy obteniendo el mismo resultado.
Ya he comprobado que es no la bandera com.apple.quarantine.
Es no los finales de línea (guión fue creado sólo desde vi). Puedo ejecutar el script usando:
bash simpleshell.sh
Aquí están los resultados:
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$
ACTUALIZACIÓN: No creo que sea el sistema de archivos que se está montando como noexec. Intenté ejecutar el script en 3 lugares diferentes: / tmp, ~ y / source.
ACTUALIZACIÓN2: Ok, después de más excavaciones: creé el script dentro de / source, que es un dmg montado. Ahí es donde ejecuté xattr -l y no encontré nada. Cuando hice el script en ~ y ejecuté xattr -l, entonces tenía el com.apple.quarantine xattr. En una corazonada, miré los atributos de montaje para / source y encontré:
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
Entonces, cuando monto este dmg, se pone en cuarentena. ¿Cómo puedo decirle a mount que no lo monte con la bandera de cuarentena? Una vez que eliminé la bandera en ~, el script funcionó bien.
chmod +x file.sh; ./file.sh
. Tal vez ese sistema de archivos esté montado con el indicador "noexec".
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.