Sha*_*aun 7 windows cygwin bash
我正在尝试在工作的计算机上更改 Cygwin 的主目录。默认情况下,我们的主目录映射到网络共享。这似乎给 Cygwin 造成了一些混乱,因为它在我的桌面上创建了一个目录,该目录遵循与网络共享相同的路径,还有一些其他前缀基于我打开 cygwin 的位置。
如果我从安装时创建的默认快捷方式打开 Cygwin:
$ echo $HOME
/cygdrive/c/Users/shaun/Desktop/SERVER/USERS:USERS/SHAUN
Run Code Online (Sandbox Code Playgroud)
如果我从 PowerShell 打开 Cygwin:
$ echo $HOME
/usr/bin/SERVER/USERS:USERS/SHAUN
Run Code Online (Sandbox Code Playgroud)
我宁愿将我的主目录放在我为自己管理程序而设置的本地程序目录中。像这样:
/cygdrive/c/users/shaun/apps/cygwin/home/shaun
Run Code Online (Sandbox Code Playgroud)
按照cygwin 的建议,执行此操作的首选方法是在/etc/nsswitch.conf. 这看起来应该这样做:
db_home: unix /%H/Apps/cygwin/home/shaun
Run Code Online (Sandbox Code Playgroud)
我对此文件所做的任何更改似乎都被忽略了。我重新启动了终端,即使我故意弄乱了语法,我也没有发现任何错误。我尝试过但失败的一些选项:
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
Run Code Online (Sandbox Code Playgroud)
每次尝试后我都重新启动了 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>
Run Code Online (Sandbox Code Playgroud)
当我在使用远程安装的主目录时遇到问题时,我使用了“映射网络驱动器”功能,因此My Documents映射到驱动器号,例如U:\。然后U:\成为 的别名My Documents。然后我进行编辑,/etc/passwd以便~指向/cygdrive/u然后一切正常。
这也可以使用本地目录来完成,但subst必须使用该命令来cmd.exe创建别名而不是“映射网络驱动器”。映射网络驱动器是永久的,但subst不是,因此必须将每次启动时执行此操作的脚本放置在 WindowsStart文件夹中。