OK, mam podobny problem do: -bash: Aplikacje / mvim: / bin / sh: zły interpreter: Operacja niedozwolona - ale to nie ten sam problem. Otrzymuję ten sam wynik.
Już sprawdziłem, że nie jest to flaga com.apple.quarantine.
To nie są zakończenia linii (skrypt został stworzony właśnie z vi). Mogę wykonać skrypt, używając:
bash simpleshell.sh
Oto wyniki:
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$
AKTUALIZACJA: Nie sądzę, że system plików jest montowany jako noexec. Próbowałem uruchomić skrypt w 3 różnych miejscach: / tmp, ~ i / source.
UPDATE2: Ok, po dalszych kopaniach - stworzyłem skrypt wewnątrz / source, który jest zamontowanym dmg. Tam właśnie uruchomiłem xattr -l i nic nie znalazłem. Kiedy wykonałem skrypt do ~ i uruchomiłem xattr -l, wtedy miał xattr com.apple.quarantine. Podczas przeczucia spojrzałem na atrybuty montowania dla / source i znalazłem:
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
Więc kiedy montuję ten dmg, ustawia się go jako kwarantannę. Jak mogę powiedzieć mountowi, aby nie montował go za pomocą flagi kwarantanny? Po usunięciu flagi w ~ skrypt działał poprawnie.
chmod +x file.sh; ./file.sh
. Być może ten system plików jest zamontowany z flagą „noexec”.
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.