我安装了MinGW-w64和MSYS2。但是如何在MSYS2中更改HOME目录?因此,当我输入cd $ home或cd~时,它会转到我定义的另一个目录。
我如何编写代码,以便起始目录始终放在.bat文件的位置?
在cmd中我使用了这段代码:
%〜D1 cd"%~p1" 叫cmd
所以当我在桌面上打开cmd时,它会从桌面上的目录开始。
我怎么能用msys2做类似的事情?
答案 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