如何更改MSYS2上的HOME目录和启动目录?

问题描述 投票:11回答:5

我安装了MinGW-w64和MSYS2。但是如何在MSYS2中更改HOME目录?因此,当我输入cd $ home或cd~时,它会转到我定义的另一个目录。

我如何编写代码,以便起始目录始终放在.bat文件的位置?

在cmd中我使用了这段代码:

%~d1 cd“%~p1”调用cmd

所以当我在桌面上打开cmd时,它从桌面上的目录开始。

我怎么能用msys2做类似的事情?

windows gcc mingw-w64 msys2
5个回答
22
投票

如果您想将Windows主文件夹用作MSYS2的主文件夹,可以编辑/etc/nsswitch.conf并编写:

db_home: windows

2
投票

Msys2将使用windows%HOME%,因为它是$ HOME目录。如果你在环境变量中设置%HOME%(到windows目录,你需要Msys2使用)它将工作。


1
投票

在其中一个shell启动脚本中(例如~/.bash_profile,其中~是默认/原始主目录),您可以更改$ HOME环境变量:

export HOME=/something/else

如果您希望shell在该目录中打开,则可能需要在设置cd后运行$HOME(不带参数);我没有测试过。


0
投票

创建或修改MSYS2 /etc/passwd文件。两种方法如下所示。

可以从MSYS2 shell运行以下命令,无论文件是否存在以及文件是否已包含当前用户,它都可以安全地运行:

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

接下来,编辑/etc/passwd,并更改相关用户的主目录字段(第6个冒号分隔字段)。

$ vim /etc/passwd

奖励:也可以通过编辑第一个字段来更改MSYS2用户名。

根据需要,将当前主目录内容移动到新的主目录。

注销,然后重新登录。

/etc/passwd编辑可以在没有手动编辑的情况下完成,但这会使更复杂的命令行粘贴到MSYS2 shell中,如果/etc/passwd文件已经存在并且其中已包含用户名,则可能无效:

__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

-1
投票

我创建了一个设置HOME变量的批处理文件:

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

这允许我将.bash_profile放在此HOME中(而不是在执行速度非常慢的默认网络位置)。

© www.soinside.com 2019 - 2024. All rights reserved.