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.