21

当我在 Windows 机器上开发 Ruby on Rails 时,我需要使用 cygwin 来模拟 Unix 命令提示符。现在的问题是,每次打开 cygwin 终端时,我都会被带到这个目录 C:/cygwin/home/my_user_name,而不是 Windows 的默认用户目录 C:/Users/my_user_name。

有谁知道如何将 cygwin 的默认主目录设置为 Windows 默认 C:/Users/my_user_name 目录?

我浏览了 Stack Overflow 中提供的各种解决方案,但它们都不适合我,“mkpasswd”也不起作用。这与我的操作系统版本有关,还是与其他有关?

我使用的是 cygwin 1.7.5,我的操作系统是 Windows 7 Business 64 位。

4

3 回答 3

22
mount -f "$USERPROFILE" ~
mount -m > /etc/fstab

有关的

安全地更改主目录

于 2012-05-18T03:43:45.410 回答
10

我只需将 Windows 中的 HOME 环境变量设置为C:\Users\MyUsername. 当我启动 Cygwin 时,它现在看起来在那里。这有一个额外的好处,即导致常规 Win32 上的 Emacs(即,不是通过 Cygwin)在正确的位置而不是在C:\Users\MyUsername\AppData\Roaming(因此在那里寻找 .emacs 和 .emacs.d)开始

于 2014-03-27T16:27:59.970 回答
10

根据Cygwin 文档,您可以编辑/etc/nsswitch.conf和更改 de db_home 参数。

  • %u - Cygwin 用户名(小写的 u)。
  • %U - Windows 用户名(大写的 U)。
  • %D - NetBIOS 样式的 Windows 域。
  • %H - POSIX 风格的 Windows 主目录。请注意,对于 db_home: 设置,
  • %_ - 由于空格和 TAB 字符用于分隔模式,因此文件名中的空格必须以 %_ 形式给出(即下划线)。
  • %% - 百分比字符。

这是我的 /etc/nsswitch.conf 的内容,用于home在每个用户目录中创建一个目录

# /etc/nsswitch.conf
#
#    This file is read once by the first process in a Cygwin process tree.
#    To pick up changes, restart all Cygwin processes.  For a description
#    see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch    
# Defaults:
# passwd:   files db
# group:    files db
# db_enum:  cache builtin
# db_home: /home/%U <------ This was the default setting
db_home: /%H/home # db_home: /home/%U <- This was the default setting
# db_shell: /bin/bash
# db_gecos: <empty>

重新启动任何 Cygwin 进程

于 2015-08-05T17:43:22.677 回答