我使用 mintty 作为 MinGW/MSYS 的控制台模拟器。最近(我不确定具体时间),此组合使用的主目录从我的 Windows 用户文件夹 ( /c/Users/<me>/
) 更改为/home/<me>/
,这给我带来了一点麻烦。
我怎样才能改回我的主目录?我在网上搜索过,但到目前为止我能找到的所有信息都是 Cygwin 特定的,无法很好地转换为 MinGW/MSYS。
到目前为止,我尝试过的最有可能的方法是/etc/passwd
和/etc/nsswitch.conf
,这两者都完全不存在于 MSYS 的根目录中。我尝试过创建一个/etc/nsswitch.conf
包含db_home: windows
一行的,但这似乎没有效果。我还没有尝试创建一个/etc/passwd
文件,因为mkpasswd
它不存在于 MinGW/MSYS 中,我不知道它的内容应该是什么。
我在跑:
- Windows 10(含周年更新)
- 我安装的所有 MinGW 和 MSYS 软件包的最新版本
- …包括 msys-mintty 1.0.3-1-msys-1.0.17
答案1
与 Cygwin 不同,MSYS 依赖于HOME
环境变量。要设置或更改HOME
变量:
- 按下键盘上的Win-或从开始菜单中选择“运行...”。r
- 输入“sysdm.cpl”并单击确定。
- 选择“高级”选项卡并单击“环境变量…”
- 单击新建… 创建新
HOME
变量或选择现有变量并单击编辑… - 完成后,继续单击“确定”,直到所有窗口都关闭。
答案2
MSYS2 的解决方案是/etc/nsswitch.conf
使用一行创建/更新
db_home: windows
如 Cygwin 文档中所述:https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch-home。
此后,必须关闭所有 MSYS 应用程序和终端,因为配置仅在 MSYS DLL 加载时读取一次。(见https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch。
截至 2019 年 10 月,它在我全新安装的 MSYS2 中可用。可能在 MSYS 1 中nsswitch.conf
不受支持。
创建HOME
环境变量对 shell 有效,但对 无效,因为它无论如何ssh
都会尝试访问。/home/User/.ssh
答案3
下面说明了如何在七个 MSYS2 终端中将HOME
( ) 目录设置为我想要的任何内容:~
来自我的 MSYS2 设置答案:从头安装和设置 MSYS2,包括将所有 7 个配置文件添加到 Windows 终端:
HOME
将您的(~
)目录从 MSYS2 的默认目录更改C:\msys64\home\my_username
为您的常规 Windows 主目录C:\Users\my_username
:在文本编辑器(例如 VSCode)中打开
C:\msys64\home\my_username\.bash_profile
。修改它,使其看起来像这样。注意:你可以用注释掉所有内容#
,然后将其添加到顶部:# Change your home (`~`) dir to `C:\Users\my_username` HOME="/c/Users/$(whoami)" # Source your `C:\Users\my_username\.profile` file, if it exists if [ -f "$HOME/.profile" ]; then . "$HOME/.profile" fi
关闭并重新打开 Windows 终端。运行
echo ~
和echo "$HOME"
并确保它们现在都显示/c/Users/my_username
。运行ls -a
并确保您看到用户的正常 Windows 主目录的内容。pwd
应该显示您当前也在该目录中...