On Tue, 30 Jan 2007 18:57:08 +0900, Moritz Reiter wrote:

> Hi,
> 
> I am writing a script which uses a configuration file. I already managed
> that it is possible for the caller to specify the location of the config
> file as a command line parameter (which was pretty easy with optparse).
> Now I want to set the default location of for the config file to
> /home/username/.my_config_file. Therefore I have to get the username of
> the user who is calling the script.
> 
> My idea would be to parse /etc/passwd for the return value of
> Process.uid but as I am pretty unexperienced in ruby I wanted to ask
> here if someone could tell me a more elegant method to do it?
> 
> Thanks,
> mo
>

Just to add to what everyone else has said so far about using
File.expand_path('~/.my_config_file') or ENV['HOME'], there is no
requirement on UNIX that the home directories be located in
/home/username. They could be placed in other trees (for example on an NFS
share somewhere) or they may be buried several levels deep -- a common
practice in large computer labs is to split them into directories based on
their first couple letters (for easier directory access) for example
/home/k/ka/kabloom.

Thus, trying to access /home/#{username}/.my_config_file is precisely the
wrong thing to do. Instead, use File.expand_path('~/.my_config_file') or
#{ENV['HOME']}/.my_config_file

--Ken


-- 
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/