Mac OS: /usr/bin/env: bad interpreter: Operation not permitted
Asked Answered
A

6

60

I'm trying to run this script on Mac OS 10.7 (Lion) and I'm getting the error:

$ bbcolors
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

I've successfully run this script on other Macs of mine. It's just this script downloaded and unmodified from Daring Fireball.

I found this person with a very similar problem but the accepted answer was that the filesystem had a 'noexe' option on mount. I'm pretty sure that's not the case for me because I've just got it in /usr/local/bin/ and other stuff in there works fine (it also doesn't run from other places or as other users including root).

$ which bbcolors
/usr/local/bin/bbcolors
$ ls -l /usr/local/bin/bbcolors 
-rwxr-xr-x@ 1 nick  staff  9751 Mar 30 19:09 /usr/local/bin/bbcolors

It's a Perl script not a compiled binary, not that that should matter. Here's some extra info for what it's worth:

$ cat /usr/local/bin/bbcolors |head -n 1
#!/usr/bin/env perl
$ which perl
/usr/bin/perl
$ env | grep PATH
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Alcuin answered 31/3, 2012 at 2:55 Comment(3)
You've covered most of the normal bases for what might be going wrong; well done. What happens when you run perl -v? What appears after the initial comment lines in the Perl script (bbcolors)? Also, the @ after the permissions means there is some auxilliary attribute information for the file; have you investigated that that is (perhaps with ls -@)?Anstice
I solved the problem with xattr -r com.apple.quarantine /file/path I will answer my own question but I don't have enough rep to do it for a few hours.Alcuin
xattr -d com.apple.quarantine /usr/local/bin/bbcolors? (-r means 'recursive'; -d means 'delete'.) I keep forgetting what that command is called.Anstice
O
115

Did you happen to open/save the file in TextEdit?

That can introduce filesystem metadata (quarantine attribute) leading to the symptom you describe.

Try:

xattr -l /usr/local/bin/bbcolors

and

xattr -d com.apple.quarantine /usr/local/bin/bbcolors

if you see the quarantine attribute.

Odell answered 31/3, 2012 at 3:21 Comment(9)
Yeah, I couldn't answer my own question, but you've got the right info out of my my comments above. FWIW: it's also worth doing a ls -al@ on the file to see the com.apple.quarantine.Alcuin
Ha. I found that solution without reading your comments. That'll teach me to refresh more often.Odell
For reference, if you realize you have a whole directory tree with the com.apple.quarantine attribute, run xattr -dr com.apple.quarantine . from inside the directory to clean all files within it. I got a mass-quarantined directory like that by unzipping a zip file I had copied over a local network.Zimmerman
1000X this! Thanks. My slightly changed solution was xattr -rd com.apple.quarantine [path to where shit hit the fan]Twicetold
The com.apple.quarantine might also be set on the Disk Image, causing it to be mounted with quarantine.Substitution
For sparse images, I did not find the com.apple.quarantine attribute on the sparsebundle itself but it was hiding on a file inside the bundle. The -r flag was necessary to clear the attribute.Forfeiture
When running this through an application environment I'm having error: xattr: [Errno 1] Operation not permitted: [file path]. Is there any command I can use to fix this?Creationism
I got the quarantine attribute even though I created the file from the command line with "bbedit filename.sh". Crazy. (Yes, BBEdit is GUI, but it's a dev tool, so I would have expected something more dev-friendly than this trap)Bivouac
Ugh, do NOT use textedit. Super annoying "feature".Schoolmate
C
15

pilcrow's answer is correct, however I draw your attention to the fact that if you are working with a disk image, the problem can be very confusing, as the com.apple.quarantine attribute seems to be inherited from the disk image file to the files inside (thanks to febeling at Apple dev forums for noticing that!).

To solve the problem, you have to remove the quarantine attribute from the disk image:

xattr -d com.apple.quarantine /path/to/disk/image

and then eject and remount the disk image. Then your files will be clean again.

Chang answered 20/12, 2012 at 13:6 Comment(1)
If it is a sparse bundle, also check the files inside. E.g. in my case the token file inside had the quarantine flag and I had to do: xattr -d com.apple.quarantine /path/to/disk_image.sparsebundle/tokenStunning
H
6

I had resolved this issue.Open the command file with TextEdit then save it.

More Info:Resolved Operation not permitted

Halfblooded answered 13/11, 2012 at 2:44 Comment(0)
M
1

I ran into this after creating a shell script in BBEdit (CLI: bbedit ~/bin/foo). It seems that the macOS sandbox security feature automatically quarantines files modified by BBEdit — if the file is executable and is accessed by BBEdit in a certain way.

The fix is easy: Preferences > Application > Allow

https://www.barebones.com/support/bbedit/quarantine.html

enter image description here

Mavilia answered 2/2, 2021 at 8:35 Comment(1)
Thank you. Not at all obvious. I've never had this problem with any other shell script before.Spellbinder
B
0
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

Does /usr/bin/env exist? Can you run it? Run by itself it should dump your environment variables to stdout.

You can safely replace:

#!/usr/bin/env perl

With the full path to your perl binary of choice, e.g:

#!/usr/bin/perl
Benco answered 31/3, 2012 at 3:5 Comment(1)
The advantage of using #!/usr/bin/env perl is that it uses your PATH environment instead. So that if you have multiple interpreters on your system, it uses your preferred one.Hypnogenesis
W
0

1.delete "node_modules" folder 2.npm install

Woodrum answered 30/12, 2022 at 9:34 Comment(2)
What makes you think that this question has anything to do with Node.js?Unpleasantness
I've unarchived a vite js project shared with me which had node_modules folder inside. Got into the error described in the issue while trying to run a project. This answer actually worked for me, thanksCathexis

© 2022 - 2024 — McMap. All rights reserved.