getting the user's home directory path

  • Follow


I've got a program that needs to access a file in the ~/etc/ directory.
This program currently accesses it like so:

  file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")

 . . but that environment variable just looks hideous in there, at least
to me.  In Perl, I'm used to using getpwuid() instead of $_ENV['user'].
Is there some equivalent to that in Ruby, or am I stuck with ENV['USER']?

-- 
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
Kent Beck: "I always knew that one day Smalltalk would replace Java.  I
just didn't know it would be called Ruby."

0
Reply perrin (1253) 3/20/2008 7:05:12 AM

On Thu, 2008-03-20 at 16:05 +0900, Chad Perrin wrote:
> I've got a program that needs to access a file in the ~/etc/ directory.
> This program currently accesses it like so:
> 
>   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> 
> . . . but that environment variable just looks hideous in there, at least
> to me.  In Perl, I'm used to using getpwuid() instead of $_ENV['user'].
> Is there some equivalent to that in Ruby, or am I stuck with ENV['USER']?
> 

require 'etc'
Etc.getpwuid.dir

works for me...

-- 
Alex


0
Reply alex605 (521) 3/20/2008 8:27:03 AM


On Thu, Mar 20, 2008 at 05:27:03PM +0900, Alex Young wrote:
> 
> On Thu, 2008-03-20 at 16:05 +0900, Chad Perrin wrote:
> > I've got a program that needs to access a file in the ~/etc/ directory.
> > This program currently accesses it like so:
> > 
> >   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> > 
> > . . . but that environment variable just looks hideous in there, at least
> > to me.  In Perl, I'm used to using getpwuid() instead of $_ENV['user'].
> > Is there some equivalent to that in Ruby, or am I stuck with ENV['USER']?
> > 
> 
> require 'etc'
> Etc.getpwuid.dir
> 
> works for me...

Hallelujah.  That's exactly what I wanted.  Thank you much.

I don't know why this wasn't working:

    > ri getpwuid
    Nothing known about getpwuid

-- 
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
Kent Beck: "I always knew that one day Smalltalk would replace Java.  I
just didn't know it would be called Ruby."

0
Reply perrin (1253) 3/20/2008 4:50:49 PM

On Fri, 2008-03-21 at 01:50 +0900, Chad Perrin wrote:
> On Thu, Mar 20, 2008 at 05:27:03PM +0900, Alex Young wrote:
> > 
> > On Thu, 2008-03-20 at 16:05 +0900, Chad Perrin wrote:
> > > I've got a program that needs to access a file in the ~/etc/ directory.
> > > This program currently accesses it like so:
> > > 
> > >   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> > > 
> > > . . . but that environment variable just looks hideous in there, at least
> > > to me.  In Perl, I'm used to using getpwuid() instead of $_ENV['user'].
> > > Is there some equivalent to that in Ruby, or am I stuck with ENV['USER']?
> > > 
> > 
> > require 'etc'
> > Etc.getpwuid.dir
> > 
> > works for me...
> 
> Hallelujah.  That's exactly what I wanted.  Thank you much.
> 
> I don't know why this wasn't working:
> 
>     > ri getpwuid
>     Nothing known about getpwuid

I get:
> qri getpwuid
nil

Same problem.  Documentation seems to be rather hit-and-miss all round
these days, but I haven't got any time to contribute to help.  I was
lucky with this - I managed to trawl it out of the depths of my memory
from a few months ago, when I needed something else in Etc.

-- 
Alex


0
Reply alex605 (521) 3/20/2008 5:16:15 PM

Hi,

At Thu, 20 Mar 2008 16:05:12 +0900,
Chad Perrin wrote in [ruby-talk:295141]:
> I've got a program that needs to access a file in the ~/etc/ directory.
> This program currently accesses it like so:
> 
>   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")

File.expand_path("~/etc/#{filename}")

-- 
Nobu Nakada

0
Reply nobu (580) 3/20/2008 9:16:02 PM

On Fri, Mar 21, 2008 at 06:16:02AM +0900, Nobuyoshi Nakada wrote:
> Hi,
> 
> At Thu, 20 Mar 2008 16:05:12 +0900,
> Chad Perrin wrote in [ruby-talk:295141]:
> > I've got a program that needs to access a file in the ~/etc/ directory.
> > This program currently accesses it like so:
> > 
> >   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> 
> File.expand_path("~/etc/#{filename}")

Amazing -- and confusing.  I could swear I actually tried that and it
didn't work out for me.  I guess I must have dreamed that.

-- 
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
Phillip J. Haack: "Productivity is not about speed. It's about velocity.
You can be fast, but if you're going in the wrong direction, you're not
helping anyone."

0
Reply perrin (1253) 3/21/2008 11:22:30 PM

It's 4 years late I know, but I found this:

http://stackoverflow.com/a/4194280/20654

    File.expand_path('~')

So the next guy that reach this via google get the right answer ;)

On Friday, March 21, 2008 5:22:30 PM UTC-6, Chad Perrin wrote:
> On Fri, Mar 21, 2008 at 06:16:02AM +0900, Nobuyoshi Nakada wrote:
> > Hi,
> > 
> > At Thu, 20 Mar 2008 16:05:12 +0900,
> > Chad Perrin wrote in [ruby-talk:295141]:
> > > I've got a program that needs to access a file in the ~/etc/ directory.
> > > This program currently accesses it like so:
> > > 
> > >   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> > 
> > File.expand_path("~/etc/#{filename}")
> 
> Amazing -- and confusing.  I could swear I actually tried that and it
> didn't work out for me.  I guess I must have dreamed that.
> 
> -- 
> CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
> Phillip J. Haack: "Productivity is not about speed. It's about velocity.
> You can be fast, but if you're going in the wrong direction, you're not
> helping anyone."
0
Reply oscarryz (2) 8/11/2012 1:00:16 AM

On Friday, March 21, 2008 5:22:30 PM UTC-6, Chad Perrin wrote:
> On Fri, Mar 21, 2008 at 06:16:02AM +0900, Nobuyoshi Nakada wrote:
> > Hi,
> > 
> > At Thu, 20 Mar 2008 16:05:12 +0900,
> > Chad Perrin wrote in [ruby-talk:295141]:
> > > I've got a program that needs to access a file in the ~/etc/ directory.
> > > This program currently accesses it like so:
> > > 
> > >   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> > 
> > File.expand_path("~/etc/#{filename}")
> 
> Amazing -- and confusing.  I could swear I actually tried that and it
> didn't work out for me.  I guess I must have dreamed that.
> 
> -- 
> CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
> Phillip J. Haack: "Productivity is not about speed. It's about velocity.
> You can be fast, but if you're going in the wrong direction, you're not
> helping anyone."



On Friday, March 21, 2008 5:22:30 PM UTC-6, Chad Perrin wrote:
> On Fri, Mar 21, 2008 at 06:16:02AM +0900, Nobuyoshi Nakada wrote:
> > Hi,
> > 
> > At Thu, 20 Mar 2008 16:05:12 +0900,
> > Chad Perrin wrote in [ruby-talk:295141]:
> > > I've got a program that needs to access a file in the ~/etc/ directory.
> > > This program currently accesses it like so:
> > > 
> > >   file_path = File.expand_path("~#{ENV['USER']}/etc/#{filename}")
> > 
> > File.expand_path("~/etc/#{filename}")
> 
> Amazing -- and confusing.  I could swear I actually tried that and it
> didn't work out for me.  I guess I must have dreamed that.
> 
> -- 
> CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
> Phillip J. Haack: "Productivity is not about speed. It's about velocity.
> You can be fast, but if you're going in the wrong direction, you're not
> helping anyone."

0
Reply oscarryz (2) 8/11/2012 1:00:30 AM

7 Replies
46 Views

(page loaded in 0.101 seconds)

Similiar Articles:













6/26/2012 12:42:51 AM


Reply: