How can I change my MinGW/MSYS + mintty home directory?

7

3

I use mintty as my console emulator for MinGW/MSYS. Recently (I'm not certain exactly when), the home directory used by this combination changed from my Windows user folder (/c/Users/<me>/) to /home/<me>/, which is causing minor havoc for me.

How can I change my home directory back? I've done some searching online, but all of the information I've been able to find so far is Cygwin-specific and hasn't translated well to MinGW/MSYS.

The most likely-looking avenues I've pursued so far are /etc/passwd and /etc/nsswitch.conf, both of which are entirely absent from MSYS' root. I've tried creating an /etc/nsswitch.conf containing a db_home: windows line, but this seemed to have no effect. I've not yet tried creating an /etc/passwd file as mkpasswd isn't present in MinGW/MSYS and I don't know what its contents should be.

I'm running:

  • Windows 10 (w/ Anniversary Update)
  • the latest version of all my installed MinGW and MSYS packages
  • …including msys-mintty 1.0.3-1-msys-1.0.17

Ben Blank

Posted 2017-02-26T19:49:10.330

Reputation: 824

Answers

11

Unlike Cygwin, MSYS relies on the HOME environment variable. To set or change your HOME variable:

  1. Press Win-r on your keyboard or select "Run…" from the Start menu.
  2. Type "sysdm.cpl" and click OK.
  3. Select the Advanced tab and click Environment Variables…
  4. Click New… to create a new HOME variable or select the existing one and click Edit…
  5. When finished, keep clicking OK until all windows are closed.

Ben Blank

Posted 2017-02-26T19:49:10.330

Reputation: 824

I had tried just exporting the envvar in an existing terminal (it had a value that it pulled from who knows where), but MINGW still wouldn't use the new value it for some reason. Setting it through this method worked wonders though! – agweber – 2018-11-30T14:19:47.600

In MSYS2, this worked for shell, but did not work for ssh for some reason. nsswitch.conf way worked for me. – Konstantin Pelepelin – 2019-11-04T17:33:05.433

1

The solution for MSYS2 is creating/updating /etc/nsswitch.conf with a line

db_home: windows

as described in Cygwin docs: https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch-home.

After that all MSYS applications and terminals must be closed, as the configuration is only read once at MSYS DLL load time. (See https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch.)

As of Oct, 2019, it works for me in a fresh installation of MSYS2. Probably, in MSYS 1 nsswitch.conf was not supported.

Creating HOME environment variable works for shell, but does not work for ssh, which tries to access /home/User/.ssh anyway.

Konstantin Pelepelin

Posted 2017-02-26T19:49:10.330

Reputation: 111

Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.

– CaldeiraG – 2019-11-05T10:00:44.183