将cygwin主目录设为Windows的用户配置文件

lix*_*ang 21 cygwin

当我在Windows机器上开发Ruby on Rails时,我需要使用cygwin来模拟Unix命令提示符.现在的问题是,每次当我打开cygwin的终端的时候,我把这个目录C:/ Cygwin的/家/ my_user_name而不是Windows的默认用户目录C:/用户/ my_user_name.

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

我已经浏览了Stack Overflow中提供的各种解决方案,但它们都不适合我,"mkpasswd"也不起作用.这与我的操作系统版本有什么关系,或者其他什么?

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

小智 20

mount -f "$USERPROFILE" ~
mount -m > /etc/fstab
Run Code Online (Sandbox Code Playgroud)

有关

安全地更改主目录


Hut*_*ut8 9

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


Gui*_*ish 8

根据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>
Run Code Online (Sandbox Code Playgroud)

重新启动任何Cygwin进程

  • 请注意,如果设置了“HOME”(如 Hut8 建议的那样),这将被覆盖。我一般更喜欢这个解决方案,但我发现了一个 [奇怪的情况,有些东西 *else* 似乎覆盖了它](http://stackoverflow.com/q/41152489/1858225),所以我已经切换到解决方案设置 Windows 环境变量。 (2认同)