cygwin:〜!= $ HOME

cygwin:〜!= $ HOME

当我启动 cygwin 时,我的 ~ 目录与 $HOME 相同。一段时间后,~ 目录发生变化,而 $HOME 保持不变。我对此感到困惑,不知道该去哪里找。也许有人经历过这种情况,或者知道发生了什么?当我启动时:

winuser@mybox ~
$ echo $HOME
/cygdrive/c/cyguser

winuser@mybox ~
$ echo ~
/cygdrive/c/cyguser

后来,~ 变为 /cygdrive/c/winuser,但不存在。当我重新启动 cygwin 时,一切恢复正常。这可能是什么原因造成的?

答案1

您的/etc/passwd文件有误;它会将您的主目录列为/cygdrive/c/winuser。请通过编辑该文件并更正该字段来修复它。

我遇到过类似的问题;Cygwin bash 在启动时不会从 passwd 文件中读取您的主目录,因此这~是正确的,但某些事情(我从未弄清楚究竟是什么)会导致它从该文件重新加载并重置,从而获取错误的值。我思考这是稍微不可靠的软件包更新的副作用,但我不确定。

答案2

如果在安装 cygwin 之前创建了 HOME 变量作为 Windows 环境变量,则可以将其指向 Windows PC 中所需的任何位置(目录必须存在)。

然后,当您安装 cygwin 时,它会考虑到这一点并为您创建正确的 /etc/passwd。

我使用 subst 为我的 Windows“我的文档”目录创建驱动器别名:

H:\ => C:\Users\WINUSERNAME\Documents

然后在 Windows 中我设置

HOME=H:\

然后就变成了

/cygdrive/h

在 Cygwin 中,简单并且没有空格等,这可能会很尴尬。

优点是,cygwin 中的我的主目录与“我的文档”相同。

相关内容