Overriding the default HOME priority settings

Andrew DeFaria Andrew@DeFaria.com
Tue Apr 5 22:34:00 GMT 2005


Pat Cahalan wrote:

> From the Cygwin FAQ:
>
>> When starting Cygwin from Windows, `HOME' is determined as follows in
>> order of decreasing priority:
>>
>> 1. `HOME' from the Windows environment, translated to POSIX form.
>
> > 2. The entry in /etc/passwd
> > 3. `HOMEDRIVE' and `HOMEPATH' from the Windows environment
> > 4. /
>
> For reasons very complex, this behavior isn't workable in my 
> environment. I need Cygwin's home to ALWAYS use the entry in /etc/passwd
> and bypass (1).
>
> Is this possible?  I've read every scrap of documentation I can find 
> and I don't see anything about overriding this default behavior.  
> Aside from examining source code and/or digging through the system 
> registry (or asking this mailing list) I'm out of ideas...

IIRC $HOME is set in /etc/profile. You can easily change /etc/profile to 
do what you like. What I used to do is make one /etc/profile then 
everybody symlinked to it.

> (background information included for those interested parties)
>
> The CS department cluster here at Caltech is built around the concept 
> that *nothing* important lives on the local machine, and that 
> everything that needs to be backed up is stored on the central file 
> server.
>
> The central file server, therefore, runs NFS and Samba.  The Linux 
> clients automount the users' homedirectories.  The Windows clients 
> have the same homedirectory mapped via the domain controller's 
> built-in ability to define %HOME% for each user account.
>
> However, all of the UNIX dotfiles in the user's homedirectory are 
> configured with the assumption that the machine mounting the 
> homedirectory also has other NFS automounts (and is set up as one of 
> our standard Linux clients), which means that most of the dotfiles in 
> %HOME% don't make sense to Cygwin.

This is a good philosophy. Mine was similar - /etc/passwd was the source 
for where $HOME is for the user. Similarly /etc/passwd was kept on the 
file server and the clients symlinked to it. Unlike Real Unix where you 
really have to log in and where you might be concerned that you would 
not be able to log in if you were having networking problems, with 
Cygwin you don't "log in" rather you are already logged in before you 
ever start Cygwin. So IMHO symlinking /etc/passwd should not be a problem.

Additionally I attempted to make $HOME on Cygwin look very similar to 
$HOME on Linux in that I did a mount -bsf //<fileserver>/<homeshare> 
/home. Therefore on Linux the user's $HOME is /home/$USER and on Cygwin, 
well, viola! It was also /home/$USER! Imagine that!

Plus with /etc/profile and /etc/passwd symlinked on the clients machine 
to known locations on a file server I had 1) the master passwd and 
profile files backed up (there were other /etc files done in a similar 
manner - /etc/group I believe and perhaps a few others - I forget) and 
2) had control to change /etc/profile to effect change across the 
organization.

So to summarize:

   1. Put key /etc files on file server. Symlink them to the client
      machine (I had my own cygwin_setup bash script to take care of
      these and other issues)
   2. Change the master /etc/profile to get/set $HOME from /etc/passwd
      (that is the symlinked master /etc/passwd).
   3. Make sure the $HOME's path is similar to that on Linux (BTW: this
      mount of //<fileserver>/<homeshare> was also done in my
      cygwin_setup bash script).

(P.S. My /etc files and other things were actually in the Clearcase 
admin vob and made visable as a Clearcase snapshot view).
-- 
Excuse me for butting in, but I'm interrupt-driven.


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list