24

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

以及如何编写代码以使起始目录始终位于 .bat 文件所在的位置?

在 cmd 我使用了这段代码:

%~d1 cd "%~p1" 调用cmd

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

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

4

7 回答 7

49

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

db_home: windows
于 2017-06-04T07:55:41.177 回答
5

Msys2 将使用 Windows %HOME% 作为 $HOME 目录。如果您在环境变量中设置 %HOME%(到您需要 Msys2 使用的 windows 目录),它将起作用。

于 2018-11-15T12:29:05.180 回答
2

在您的 shell 启动脚本之一(例如~/.bash_profile~默认/原始主目录在哪里)您可以更改 $HOME 环境变量:

export HOME=/something/else

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

于 2015-12-10T21:57:44.743 回答
2

我更喜欢只更新/etc/fstab @fstab

# cat /etc/fstab
# For a description of the file format, see the Users Guide
# https://cygwin.com/cygwin-ug-net/using.html#mount-table

# DO NOT REMOVE NEXT LINE. It remove cygdrive prefix from path
none / cygdrive binary,posix=0,noacl,user 0 0
##################################################################
# Canonicalize the two home directories by mounting the windows  #
# user home with the same path mapping as unix.                  #
##################################################################
none /c/Users/Edward /home/Edward binary,posix=0,noacl,user 0 0
于 2021-04-05T00:02:33.650 回答
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
于 2018-11-08T19:44:24.200 回答
0

除了上面的anwsers,还有另一种使用Windows命令mklink创建目录符号链接的方法,类似于ln在Linux上:

首先创建一个目录e:\msys\home,然后cmd管理员身份运行,然后

cd c:\msys64
mklink /d home e:\msys\home

无需其他更改。

于 2021-08-16T01:21:22.317 回答
-2

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

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

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

于 2016-08-24T01:04:43.457 回答