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. -- *** E-Mail is NOT a SECURE channel *** James B. Byrne mailto:ByrneJB at Harte-Lyne.ca Harte & Lyne Limited http://www.harte-lyne.ca 9 Brockley Drive vox: +1 905 561 1241 Hamilton, Ontario fax: +1 905 561 0757 Canada L8E 3C3
On Fri, Dec 10, 2010, James B. Byrne 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?The /bin/env command uses the $PATH environment variable to find the argument. If you want to invoke a specific version of ruby, change the PATH variable or replace this with: #!/usr/local/bin/ruby Bill -- INTERNET: bill at celestial.com Bill Campbell; Celestial Software LLC URL: http://www.celestial.com/ PO Box 820; 6641 E. Mercer Way Voice: (206) 236-1676 Mercer Island, WA 98040-0820 Fax: (206) 232-9186 Skype: jwccsllc (206) 855-5792 A paranoid is a man who knows a little of what's going on. -- William S. Burroughs
On 12/10/2010 11:20 AM, James B. Byrne 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? >Why not just change the shebang line to use #!/usr/local/bin/ruby ? -- Benjamin Franz
At Fri, 10 Dec 2010 14:20:12 -0500 (EST) CentOS mailing list <centos at centos.org> 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?PATH=/usr/local/bin:$PATH Compare the value of PATH in your shell vs. the cronjob.> > 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. > > > >-- Robert Heller -- 978-544-6933 / heller at deepsoft.com Deepwoods Software -- http://www.deepsoft.com/ () ascii ribbon campaign -- against html e-mail /\ www.asciiribbon.org -- against proprietary attachments
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.