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

时间:2015-11-26 16:08:55

标签: windows gcc mingw-w64 msys2

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

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

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

%〜D1 cd"%~p1" 叫cmd

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

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

5 个答案:

答案 0 :(得分:19)

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

db_home: windows

答案 1 :(得分:1)

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

export HOME=/something/else

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我更喜欢只更新 /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

答案 4 :(得分: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