How to change HOME directory and start directory on MSYS2?

一笑奈何 提交于 2019-12-04 01:36:38
dr ganjoo

If you would like to use your windows home folder as the home folder for MSYS2, you can edit /etc/nsswitch.conf and write:

db_home: windows

Msys2 will use windows %HOME% as it's $HOME dir. If you set %HOME% in environment variables (to the windows directory you need Msys2 to use) it will work.

In one of your shell startup scripts (e.g. ~/.bash_profile where ~ is the default/original home directory) you can change the $HOME environment variable:

export HOME=/something/else

If you want your shell to open in that directory you might need to run cd (with no arguments) after setting $HOME; I have not tested it.

Create or modify an MSYS2 /etc/passwd file. Two ways of doing this are shown below.

The following command can be run from an MSYS2 shell, and works safely whether or not the file exists and whether or not it already contains the current user:

$ grep "^${USERNAME}:" /etc/passwd >/dev/null 2>&1 || mkpasswd | grep "^${USERNAME}:" >>/etc/passwd

Next, edit /etc/passwd, and change the relevant user's home directory field (the 6th colon-delimited field).

$ vim /etc/passwd

BONUS: It is also possible to change the MSYS2 username by editing the first field.

As desired, move current home directory content to the new home directory.

Log off, then log back in.

The /etc/passwd edits can be done without manual editing, but this makes for a more complex command-line to paste into the MSYS2 shell, and, it might not work if the /etc/passwd file already exists and has the username in it already:

__DIR="/path/to/home"
mkpasswd | grep "^${USERNAME}:" | \
awk -v DIR="${__DIR}" -v RS=":" -v ORS="/n" \
'NR == 6 { printf(DIR ":"); next } { printf("%s", $0) } NR < 7 { printf(":") }' - >>/etc/passwd

I've created a batch file which sets the HOME variable:

set HOME=C:\Users\%USERNAME%
C:\LocalApp\PortableGit\git-bash.exe

This allows me to put my .bash_profile in this HOME (rather than on the default network location which performs very slowly).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!