MacOS Catalina, ruby bad interpreter error
Another Catalina rant, this time about Ruby. As far as I know, on MacOS, it is advisable to leave system Ruby version to the OS (For 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
/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.
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.
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.