我如何更改我的 MinGW/MSYS + mintty 主目录?

我如何更改我的 MinGW/MSYS + mintty 主目录?

我使用 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变量:

  1. 按下键盘上的Win-或从开始菜单中选择“运行...”。r
  2. 输入“sysdm.cpl”并单击确定。
  3. 选择“高级”选项卡并单击“环境变量…”
  4. 单击新建… 创建新HOME变量或选择现有变量并单击编辑…
  5. 完成后,继续单击“确定”,直到所有窗口都关闭。

答案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 终端

  1. 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应该显示您当前也在该目录中...

相关内容