OK, estou tendo um problema semelhante ao: -bash: Applications / mvim: / bin / sh: bad intérprete: Operação não permitida - mas não é o mesmo problema. Estou obtendo o mesmo resultado.
Eu já verificado que é não a bandeira com.apple.quarantine.
É não o final de linha (roteiro foi criado apenas a partir vi). Eu posso executar o script usando:
bash simpleshell.sh
Aqui estão os 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$
ATUALIZAÇÃO: Não acredito que seja o sistema de arquivos montado como noexec. Eu tentei executar o script em 3 lugares diferentes: / tmp, ~ e / source.
UPDATE2: Ok, depois de mais pesquisas - criei o script dentro / source, que é um dmg montado. Foi aí que corri o xattr -l e não encontrei nada. Quando copiei o script para ~ e executei o xattr -l, ele tinha o xattr com.apple.quarantine. Em um palpite, observei os atributos de montagem para / source e encontrei:
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
Então, quando eu monto este dmg, ele está sendo definido como quarentena. Como posso dizer ao mount para não montá-lo com o sinalizador de quarentena? Depois que removi a flag em ~, o script correu bem.
chmod +x file.sh; ./file.sh
. Talvez esse sistema de arquivos esteja montado com o sinalizador "noexec".
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.