ตกลงฉันมีปัญหาคล้ายกับ: -bash: Applications / mvim: / bin / sh: ล่ามไม่ดี: ไม่อนุญาตให้ใช้งาน - แต่มันไม่ใช่ปัญหาเดียวกัน ฉันได้รับผลลัพธ์เดียวกัน
ฉันได้ตรวจสอบแล้วว่าไม่ใช่ธง com.apple.quarantine
มันไม่ได้จบสาย (สคริปต์ที่ถูกสร้างขึ้นมาจาก vi) ฉันสามารถรันสคริปต์โดยใช้:
bash simpleshell.sh
นี่คือผลลัพธ์:
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: ฉันไม่เชื่อว่ามันเป็นระบบไฟล์ที่ติดตั้งเป็น noexec ฉันลองใช้งานสคริปต์ในที่ต่าง ๆ 3 แห่ง: / tmp, ~ และ / source
UPDATE2: ตกลงหลังจากขุดมากขึ้น - ฉันสร้างสคริปต์ภายใน / แหล่งซึ่งเป็นเมานต์ dmg นั่นคือสิ่งที่ฉันวิ่ง xattr -l และไม่พบอะไรเลย เมื่อฉัน cp ต้องการสคริปต์เป็น ~ และรัน xattr -l มันก็มี com.apple.quarantine xattr ในลางสังหรณ์ฉันมองไปที่แอตทริบิวต์ Mount สำหรับ / source และพบว่า:
/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)
ดังนั้นเมื่อฉันเมานต์ dmg นี้มันจะถูกกำหนดเป็นกักกัน ฉันจะบอกให้เมาไม่ติดด้วยธงกักกันได้อย่างไร เมื่อฉันลบการตั้งค่าสถานะใน ~ สคริปต์ก็ทำงานได้ดี
chmod +x file.sh; ./file.sh
นั่นคือการใช้ บางทีระบบไฟล์นั้นถูกเมาท์ด้วยแฟล็ก "noexec"
defaults write com.apple.LaunchServices LSQuarantine -bool NO
.