我正在尝试在工作的计算机上更改Cygwin的主目录。默认情况下,我们的主目录映射到网络共享。这似乎为Cygwin造成了一些混乱,因为它在我的桌面上创建了一个目录,该目录遵循与网络共享相同的路径,另外一些前缀则基于我从中打开cygwin的位置。
如果我从安装时创建的默认快捷方式中打开Cygwin:
$ echo $HOME
/cygdrive/c/Users/shaun/Desktop/SERVER/USERS:USERS/SHAUN
如果我从PowerShell打开Cygwin:
$ echo $HOME
/usr/bin/SERVER/USERS:USERS/SHAUN
我宁愿将我的主目录放在我自己设置的用于管理程序的本地程序目录中。像这样:
/cygdrive/c/users/shaun/apps/cygwin/home/shaun
cygwin建议,执行此操作的首选方法是在中输入/etc/nsswitch.conf
。看起来应该这样做:
db_home: unix /%H/Apps/cygwin/home/shaun
我对此文件所做的任何更改似乎都将被忽略。我重新启动终端,即使我故意弄乱了语法,也没有任何错误。我尝试过但失败的一些选项:
db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
db_home: /%H/Apps/cygwin/home/shaun
db_home: unix /%H/Apps/cygwin/home/shaun
db_home: cygwin desc
db_home: cygwin /path /%H/Apps/cygwin/home/shaun
每次尝试后,我都重新启动了Cygwin进程。我还尝试将db_shell
选项更改为/bin/sh
仅作为实验,但外壳没有更改。
过去在StackExchange中提出的问题建议更改/etc/passwd
文件,只有注释掉/etc/profile
自动创建HOME目录的代码块后,我才能使该文件生效。然后,过了一段时间,它又回到了旧家。
是否有什么我失踪有关/etc/nsswitch.conf
文件?看起来这是设置自定义配置的一种简单便捷的方法。Cygwin不建议您使用其他替代方法,但如果我错了,请告诉我哪种方法是首选。
我目前 /etc/nsswitch.conf
# /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
db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
# db_shell: /bin/bash
# db_gecos: <empty>
echo $HOME
Cygwin中命令的结果没有变化。
/etc/nsswitch.conf