This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: db_home setting in nsswitch.conf is ignored.

On Jul 23 00:53, Andrey Repin wrote:
> Greetings, Shaun Martin!
> >> Is HOME set in the Windows environment already?  If so, this
> >> might interact with the setting in /etc/nsswitch.conf, which *only*
> >> works for entries taken from the passwd DB (getpwnam, getpwuid calls).
> >> 
> >> How do you start mintty?  It should be started with a single parameter,
> >> a dash, e.g.:
> >> 
> >>   C:\cygwin64\bin\mintty.exe -
> > Yes, HOME is set in the Windows environment and I am not able to change it.
> How so?...

I think admins can disallow changing your default user environment via
policy.  But that only means you can't change the env for the *first*
process in a process tree.  See below.

> > With the "SET" command in a Windows command prompt I can see:
> That's suspicious. So many symbols not allowed to be there.

I agree.

For a start, this behaviour of Cygwin has not chaged since at least

When being started from a non-Cygwin process (e.g. cmd, explorer),
Cygwin checks if the environment variable $HOME is already set.  If so,
it uses it verbatim.  Otherwise, it generates a value for $HOME
from the user's passwd DB entry or, if that fails for some reason,
falls back to generate a POSIX path from $HOMEDIR/$HOMEDRIVE.

The above value of $HOME is really a problem here.  Not only that
it exists and doesn't actually reflect your HOME, it's also not
starting with a slash and thus is evaluated as a *relative* path.
Therefore your resulting HOME will depend on the current directory
you're starting the Cygwin process from.

The fact that your actual home directory in the passwd DB is set
differently doesn't matter anymore then.  I.e., the output of

  $ getent passwd <your-account>

will very likely show something different as pw_dir entry.

On a second look into your OP, I'm also a bit puzzled about the
settings you made in /etc/nsswitch.conf.  No offense meant, but
it seem you just used some arbitrary settings without actually
reading what they mean and how to configure them (e.g. cygwin, desc).

Is there a problem understanding  I'm always grateful for
hints how to improve the docs, even more so for patches to the docs.

> > When you say it only works for entries taken from passwd DB, does that
> > mean I need to create a "/etc/passwd" file in order to change the
> > "db_home" directory with nsswitch.conf?
> No, she said that it only works if Cygwin has to retrieve these records from
> DB. If the information is already available, it will be used as is.


> > I'm starting mintty with the shortcut generated by the installer:
> > C:\Users\shaun\Apps\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -
> System properties - Advanced - Environment.
> Remove the HOME variable. It shouldn't be there for Windows to begin with.
> If that wouldn't work, talk to your domain admin, explain the situation and
> ask to resolve the conflict.
> If Cygwin is a necessary part of your workflow, there's a Cygwin-specific
> schema available which can be installed in domain to help facilitate provision
> of the necessary Cygwin-specific information.

Alternatively (if your admin is a BOFH), you can always drop HOME from
your powershell env before starting a Cygwin process.

Even more alternatively, what Cygwin *could* do in an upcoming version
is to check the incoming $HOME for validity, i.e., is it an absolute
POSIX path and does it resolve to an existing directory.  If not,
ignore it and try the entry from the passwd DB.

However, I'm rather reluctant to do that.  For one your case is a first.
Such a change could also have surprising side effects.  Maybe just
checking for a leading slash would work in most environments, but


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgpVyysvIMqbq.pgp
Description: PGP signature

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]