[CentOS] /bin/env

Sun Dec 12 05:50:50 UTC 2010
Brian Mathis <brian.mathis at gmail.com>

On Fri, Dec 10, 2010 at 2:20 PM, James B. Byrne <byrnejb at harte-lyne.ca> wrote:
> Please forgive my ignorance but I need a explanation of how to
> accomplish the following since I cannot figure it out from the
> documents.
>
> I have a Ruby script with a shebang line that looks like this:
>
> #!/usr/bin/env ruby
>
> On one particular host I have two Ruby interpreters installed; one
> the CentOS base version 1.8.6 in /usr/bin/ruby the other version
> 1.8.7 in /usr/local/bin/ruby.  In my shell the which command finds
> /usr/local/bin/ruby.  In a cron job the /usr/bin/ruby is used by the
> /bin/env invocation.
>
> My question is: How does one configure /bin/env to return the
> /usr/local/bin/ruby version?  or does that question even make sense?
>
> I have looked at the alternatives command but that seems just a tad
> involved.  And since this is a production server I am not quite
> ready to trust to RVM either.
>
> In the short term I have simply removed the CentOS version which has
> resolved the immediate issue.  However, I would like to know how to
> handle this a little more elegantly in future.


I'm not sure who came up with the "/usr/bin/env" thing (though I
understand what they were trying to do), but it's exceedingly stupid.
Even the smallest bit of testing would have easily revealed these
kinds of problems with it.  The solution is to simply not use it and
directly invoke the interpreter.