Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

OK, I'm having a similar problem to: -bash: Applications/mvim: /bin/sh: bad interpreter: Operation not permitted - but it's not the same problem. I'm getting the same result.

I've already verified that it's not the com.apple.quarantine flag.

It's not the line endings (script was created just from vi). I can execute the script by using:

bash simpleshell.sh

Here's the results:

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: I don't believe it's the filesystem being mounted as noexec. I've tried running the script in 3 different places: /tmp, ~, and /source.

UPDATE2: Ok, after more digging - I created the script inside /source, which is a mounted dmg. That's where I ran xattr -l and found nothing. When I cp'd the script to ~ and ran xattr -l, it then had the com.apple.quarantine xattr. On a hunch, I looked at the mount attributes for /source and found:

/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)

So when I mount this dmg it's getting set as quarantine. How can I tell mount not to mount it with the quarantine flag? Once I removed the flag in ~, the script ran fine.

share|improve this question
    
If you don't get your answer here, consider asking on UNIX and Linux SE. –  Max Ried Sep 19 '12 at 16:00
    
I may just cross-post it anyways - this is basically blocking me from getting any work done :( –  Kylar Sep 19 '12 at 16:01
    
Are you able to run other programs on the same filesystem in a similar fashion? That is using chmod +x file.sh; ./file.sh. Maybe that filesystem's mounted with the "noexec" flag. –  cm2 Sep 19 '12 at 16:24
2  
It might be helpful to rewrite your question to only ask about how to tell mount to not use the quarantine flag, since you now determined that was your actual problem. Also, I don't know how to disable it for a particular volume, but to disable quarantine altogether, defaults write com.apple.LaunchServices LSQuarantine -bool NO. –  houbysoft Sep 19 '12 at 16:47
2  
OK, I have solved it. There was a com.apple.quarantine xattr set on the .dmg file. I had to unmount it, clear the xattr and then remount the dmg. GAH. @houbysoft: thanks for the tip on turning it off entirely. –  Kylar Sep 19 '12 at 16:50

2 Answers 2

up vote 1 down vote accepted

The script was being run from inside a .dmg that had the quarantine flag set on it. When the .dmg was mounted, it was mounting it with a quarantine flag that is inherited, but doesn't show up. I unmounted the .dmg, removed the quarantine flag, and re-mounted it, and all was well.

share|improve this answer
    
Thank you for this. I had a similar problem, and it was driving me crazy: A Perl script, created by Vim (or even cat), with no quarantine xattr associated with it. However, the script resided in a mounted sparse bundle. After reading this page, I unmounted the filesystem and looked inside the bundle: There was a file named "token" in there that had the "com.apple.quarantine" xattr set. Once I deleted the xattr and remounted the sparse bundle filesystem, my "bad interpreter" problem with the Perl script went away. –  Lee Johnson Feb 11 at 17:00

I have a simple solution: cat configure.sh > test.sh then run test.sh.

Turns out to be an editor problem: https://discussions.apple.com/thread/3733470?start=30&tstart=0

share|improve this answer
    
No, it's not a solution for my situation. As the question reads, I was using vi to create the scripts. That's an interesting link though. –  Kylar Jul 11 '13 at 4:23

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.