There are hundreds of reports on the net about "sudo: gem: command not found".  Out of the dozen or so I looked at, the suggested resolution amounted to "ensure that ‘gem’ is in your PATH."



Yep.  It is in my path.  That is to say, the following works: ­


gem –help
but the following fails:


sudo gem –help

Further confusing matters, gem is in the path shown by:


sudo echo $PATH

The trick is that sudo doesn’t use $PATH for its path on some editions of Linux.  This behavior is considered "more secure."  (See http://stackoverflow.com/questions/257616/sudo-changes-path-why ).



Bah!  It is still a pain to work around.  You have to get ‘gem’ into the path (not simply the $PATH!)  You’ll read about options you can pass to sudo, and that is fine and dandy when you type the command-line yourself.  When someone’s script invokes sudo for you, you’re stuck with the command line that it uses.



The hack, reproduced from the stackoverflow article:


­

mv /usr/bin/sudo /usr/bin/sudo.orig
cat > /usr/bin/sudo <<EOF
#!/bin/bash
/usr/bin/sudo.orig env PATH=$PATH "$@"
EOF

­ then your regular sudo works just like the non secure-path sudo.