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/