当我启动 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 中的我的主目录与“我的文档”相同。