Safely change home directory

I ended up exiting all my cygwin shells and editing it by hand in a text editor. So far, so good.

Note: don't escape the spaces in the "Documents and Settings" directory. The entry will look like

user:...:/cygdrive/c/Documents and Settings/user:/bin/bash

The line is tokenized on the : character.


For the current user the following worked for me:

  1. Close Cygwin.
  2. Set the HOME Windows user environment variable.
  3. Start Cygwin.
  4. run "mkpasswd -c -p "$(cygpath -H)" > /etc/passwd".
  5. Restart Cygwin.

I confirmed it worked by running ssh-keygen without any arguments. After making this change the app now defaults to saving the key to /cygdrive/c/Users/user instead of /home/user.

I don't know if setting HOME is required, but I did it anyway per instructions for setting up TortoiseGit with Cygwin using Tortoise's official documentation for unofficial Cygwin support here. Setting HOME alone though was not enough for ssh-keygen to recognize the home directory change.

Also, note that Cygwin's official documentation on this issue can be found here.

Confirmed in Windows 7 using 64-bit Cygwin v1.7.35.


The simplest answer I have found is to make /home to be a soft link to your Windows Home/UserProfile directory

cd /
mv home oldhome
ln -s "$(cygpath -H)" home

I used cygpath as it will get the proper location for the HOME directory on the current version of Windows. On my box cygpath -H returns /cygdrive/c/Users


EDIT: For recent versions of Cygwin (1.7.34 and beyond), see this newer question.

Like sblundy's answer, you can always edit by-hand.

But if you want to do it the "official" way, use the cygwin-specific mkpasswd command. Below is a snippet from the official docs on mkpasswd :

For example, this command:

Example 3.11. Using an alternate home root

$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

would put local users' home directories in the Windows 'Profiles' directory.

There's a bunch of other really useful commands described on the Cygwin Utilities documentation page (which includes mkpasswd). The use of cygpath in the example above is another of these cygwin-specific tools.

While you're at it, you probably also want to read the Using Cygwin Effectively with Windows documentation. There's a bunch of really good advice.