I installed ruby using rbenv but after several attempts I don't manage to make the root user see the ruby bin.

I installed rbenv under /var/opt/rbenv

This is the content of /etc/profile.d/rbenv.sh:

export RBENV_ROOT=/var/opt/rbenv
eval "$(rbenv init -)"

As user pi, ruby -v returns ruby 2.2.2p95
But sudo ruby -v or ruby -v as root returns ruby not found.
How can I make root use my rbenv installation?
Should I fallback or RVM instead of rbenv?

Info: I need to run my ruby scripts as root in order to access the GPIOs.
Note: I need ruby >=2 so apt-get install ruby-full is not a solution.

  • not found sounds like the path is not set correctly. Did you su or su -? Only the latter starts a new shell and therefore sources the scripts in /etc/profile.d. Try echo $PATH to check as root whether the setting of your profile.d are imported or not. – Ghanima Apr 19 '15 at 13:59
  • You are right, it works from sudo -i. I am trying to have it available in rc.local as well (as it is how my script will start) but no luck so far. How can I enrich the path in rc.local? – Balzard Apr 19 '15 at 14:42
  • sudo is configured to restrict how $PATH is set by default, but you can disable that. See here. – goldilocks Apr 19 '15 at 15:24

If you are calling your script from rc.local then call . /etc/profile.d/rbenv.sh before your script in rc.local . You can use source instead of . . ~/.bashrc and ~/.profile can be used for per user login settings. printenv is a good tool to check what is set.

| improve this answer | |

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