Jump to content

MacOS Catalina, ruby bad interpreter error

Posted in Rants · 2 minutes read

Another Catalina rant, this time about Ruby. As far as I know, on MacOS, it is advisable to leave system Ruby version to the OSFor example users don't have write permission on the system's gems folder. , and install a separate version for development. I had one installed via Homebrew, and never had any issues with it.

But after Catalina upgrade, I couldn't run Jekyll. Every time it would fail with the following error:

$ jekyll
  -bash: /usr/local/bin/jekyll: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby:
  bad interpreter: No such file or directory

I checked my bash profile and run which ruby to make sure I'm using the one installed by brew, and everything seemed to be in order.

# .bash_profile
export PATH="/usr/local/opt/ruby/bin:$PATH"

# bash
$ which ruby
/usr/local/opt/ruby/bin/ruby

After quick internet search I learned a lot of people are having similar problems after system upgrade, but I couldn't find the solution.

I've tried reinstalling ruby, setting GEM_HOME, altering PATH in /etc/profile and /etc/bashrc, removing and reinstalling gems, but nothing worked.

Then I tried to see which Jekyll binary is used and realized - for some reason gems were installed using the correct ruby version, but binaries weren't linked properly.

Jekyll binary wasn't coming from brew ruby installation

So the solution was pretty easy at the end, all I had to do is to find gems/bin folder and add it to my path.

# Use ruby installed by brew
export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.6.0/bin/:$PATH"

It looks like a common sense, but it took me a couple of hours to figure it out. Hopefully this will save time people facing the same issue.


Big Sur update (December 2020) #

I got the same error after updating to Big Sur, but this time I couldn't solve it. I still don't know what I was doing wrong. In the end I started using rbenv to manage ruby installations, and it works flawlessly.

Comments (11)

8. November 2020
Scotty

Thank you so much! I was dead in the water trying to use a gem I can't work without, and your one line of code fixed everything. Appreciate it!

11. September 2020
Stanko

Lukas, I'm no ruby expert but that seems like a missing gem in your app.

Suresh, not sure where you got stuck. You just need to add paths to the ruby and gems folders to the PATH ENV variable.

11. September 2020
Suresh D

Hi Team, Please help me with the same problem as found: "-bash: /usr/local/bin/papi-client: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory" Your tutorial as good, you are a mastermind but I need an elaborate tutorial. Please help me...

20. August 2020
Lucas

I tried to follow along with what you are doing but get this error - An error occurred while installing http_parser.rb (0.6.0), and Bundler cannot continue. Make sure that gem install http_parser.rb -v '0.6.0' --source 'https://rubygems.org/' succeeds before bundling.

20. August 2020
Aaron

Thank you!

31. July 2020
Adrian

yeah, thanks 1!

15. July 2020
Stanko

Thank you both for the kind words!

And I hear you, it is a simple one, but was super hard for me to pinpoint it.

Cheers!

14. July 2020
Craig

Thank you so much for this article! That one line of code has fixed a world of problems I've had after hours of head-scratching...

I too reinstalled Ruby several times wondering why this wasn't working and it was such a simple fix... I was just looking in the wrong place.

Not all heroes wear capes :)

28. May 2020
Sabrina

Thanks for writing this article, it helped me fix up this issue with a different gem on my machine not once but twice!

10. February 2020
Stanko

Thank you Mogli, I just want to add that it will work only for people running jekyll in a docker container using jekyll-docker.

Cheers!

10. February 2020
Mogli

Or.... docker run --rm -it -w /src -v $PWD:/src jekyll/jekyll