OK, tôi đang gặp vấn đề tương tự như: -bash: Ứng dụng / mvim: / bin / sh: trình thông dịch xấu : Thao tác không được phép - nhưng đó không phải là vấn đề tương tự. Tôi đang nhận được kết quả tương tự.
Tôi đã xác minh rằng đó không phải là cờ com.apple.quarantine.
Đây không phải là kết thúc dòng (tập lệnh được tạo từ vi). Tôi có thể thực thi tập lệnh bằng cách sử dụng:
bash simpleshell.sh
Đây là kết quả:
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$
CẬP NHẬT: Tôi không tin đó là hệ thống tập tin được gắn kết là noexec. Tôi đã thử chạy tập lệnh ở 3 nơi khác nhau: / tmp, ~ và / source.
CẬP NHẬT2: Ok, sau khi đào thêm - Tôi đã tạo tập lệnh bên trong / nguồn, là một dmg được gắn kết. Đó là nơi tôi đã chạy xattr -l và không tìm thấy gì. Khi tôi cp'd script thành ~ và chạy xattr -l, thì nó đã có com.apple.quarantine xattr. Trong một linh cảm, tôi đã xem xét các thuộc tính gắn kết cho / nguồn và tìm thấy:
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
Vì vậy, khi tôi gắn dmg này, nó sẽ được đặt cách ly. Làm thế nào tôi có thể nói gắn kết không gắn kết với cờ kiểm dịch? Khi tôi xóa cờ trong ~, tập lệnh chạy tốt.
chmod +x file.sh; ./file.sh
. Có thể hệ thống tập tin đó được gắn cờ "noexec".
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.