From: primehalo@... (Ken Innes) Date: 2004-11-09T14:18:36+09:00 Subject: Re: ENV["PATH"] is being overwritten (in Ruby 1.4.6) primehalo@hotmail.com (Ken Innes) wrote in message news:<70452692.0411081519.60aa8c87@posting.google.com>... > I'm having a weird problem where accessing the PATH environment > variable overwrites it with a different path. As an example: > > /scripts/script1.rb: > #!/usr/bin/ruby > puts `env | grep PATH` > puts ENV["PATH"] > puts `/usr/bin/env | grep PATH` > > Command Line: > [testing]% script1.rb > /bin:/usr/bin:/usr/local/bin:.:/scripts > /bin:/usr > PATH=/bin:/usr > [testing]% > > I have to put the full path for "env" the second time otherwise I'd > get "sh: env: command not found". And I don't know where the "/usr" > directory comes from. I've searched all the files in my home > directory, and don't see it setting just "/usr" to the path anywhere. > I also searched through the files in the Ruby directory and never see > a "/usr" by itself. > > This is a project that I inherited which uses Ruby 1.4.6 on a RedHat > Linux 6.1J. I copied it onto my RedHat Linux 6.1J machine, and > upgraded Ruby to fix the problem. Unfortunately, the scripts are not > quite compatible with the updated Ruby, so I had to revert to the > version that was originally used. I did more testing, and found that the path is getting truncated after "/bin:/usr". My .tcshrc looked like so: set path = ( /bin ) set path = ( $path /usr/bin ) set path = ( $path /usr/local/bin ) set path = ( $path . ) set path = ( $path /scripts ) Then I added a few lines, and it still truncated at the same spot: set path = ( /bin ) set path = ( $path /test1/usr ) set path = ( $path /test1/usr/test2 ) set path = ( $path /usr/bin ) set path = ( $path /usr/local/bin ) set path = ( $path . ) set path = ( $path /scripts ) Gave this after executing the script: PATH=/bin:/test1/usr:/test1/usr/test2:/usr However, it does not seem to truncate at all if put /usr as the first one: set path = ( /usr ) set path = ( $path /bin ) set path = ( $path /usr/bin ) set path = ( $path /usr/local/bin ) set path = ( $path . ) set path = ( $path /scripts ) I really don't understand this at all.