安装后如何更改Cygwin主文件夹?
我刚刚安装了Cygwin,看起来bash提示符中的主目录在我的Z:drive上。那不是我想要的地方 如何更改此设置?,建议的方法是将自定义的安装后如何更改Cygwin主文件夹?,cygwin,Cygwin,我刚刚安装了Cygwin,看起来bash提示符中的主目录在我的Z:drive上。那不是我想要的地方 如何更改此设置?,建议的方法是将自定义的db\u home设置添加到/etc/nsswitch.conf。执行此操作时的一个常见愿望是使Cygwin主目录与Windows用户配置文件目录相等。此设置将执行以下操作: db_home: windows 或者,相当于: db_home: /%H 如果希望对该方案进行一些修改,例如将Cygwin主文件分隔到Windows用户配置文件目录的子目录中,则
db\u home
设置添加到/etc/nsswitch.conf
。执行此操作时的一个常见愿望是使Cygwin主目录与Windows用户配置文件目录相等。此设置将执行以下操作:
db_home: windows
或者,相当于:
db_home: /%H
如果希望对该方案进行一些修改,例如将Cygwin主文件分隔到Windows用户配置文件目录的子目录中,则需要使用后一种形式:
db_home: /%H/cygwin
对于windows
选项,还有一些其他的替代方案,加上一些其他的%
令牌,您可以使用它们来代替%H
,或者作为它的补充。有关详细信息,请参见中的
如果您在1.7.34之前安装了Cygwin,或运行了其,因此您有一个/etc/passwd
文件,则可以通过编辑用户在该文件中的条目来更改Cygwin主目录。在/etc/passwd
中,您的主目录是用户行中倒数第二个元素
无论采用哪种方式,这都会导致在shell启动期间设置HOME
环境变量
有关此主题的详细信息,请参阅
脚注:
/etc/passwd
和/etc/group
移到一边,以便使用%HOME%
,但它是。它不仅随意地覆盖了上述机制,而且并不总是起作用,例如通过cron
运行shell脚本时更改您的家庭环境变量 在XP上,它右键单击我的电脑>>属性>>高级>>环境变量>>用户变量>>[选择变量主页]>>编辑我碰巧使用了Cygwin捆绑的cwRsync(Cygwin+Rsync for Windows),我找不到/etc/passwd 它不停地说
Could not create directory '/home/username/.ssh'.
...
Failed to add the host to the list of known hosts (/home/username/.ssh/known_hosts).
因此,我编写了一个批处理文件,在运行rsync之前更改了HOME变量。比如:
set HOME=.
rsync /path1 user@host:/path2
瞧!.ssh文件夹出现在当前工作目录中,rsync不再使用rsa指纹进行骚扰
这是一个快速修复程序,但稍后您应该将主页更改为更安全的位置。我想对$HOME优先的位添加一个更正/更新。/etc/passwd中的主目录优先于所有内容 我是Cygwin的长期用户,我刚刚干净地安装了Windows7x64和CygwinV1.126。我发疯了,想弄明白为什么每次运行ssh我都会得到:
e:\>ssh foo.bar.com
Could not create directory '/home/dhaynes/.ssh'.
The authenticity of host 'foo.bar.com (10.66.19.19)' can't be established.
...
我在Windows环境中添加了HOME=c:\users\dhaynes定义,但它仍在尝试创建“/HOME/dhaynes”。我尝试了各种组合,包括设置/cygdrive/c/users/dhaynes。谷歌搜索错误消息,找不到任何东西,在cygwin网站上找不到任何东西。我使用cmd.exe中的cygwin,而不是bash.exe,但这两个版本都存在问题
我最终意识到/etc/passwd中的主目录优先于$home环境变量。我简单地重新运行了'mkpasswd-l>/etc/passwd',更新了主目录,现在ssh一切正常
对于有系统管理员经验的linux类型来说,这可能是显而易见的,但对于我们这些主要使用Windows的人来说,这有点模糊。Cygwin 1.7.34+
对于那些使用Cygwin 1.7.34或更高版本的用户,Cygwin支持在/etc/nsswitch.conf
中配置如何获取主目录、登录shell和gecos信息。这在Cygwin用户指南一节中有详细说明:
/etc/passwd
或/etc/group
文件,则需要删除这些文件,并使用新的Windows安全模型到POSIX映射配置Cygwin
[[ -f /etc/passwd ]] && mv /etc/passwd /etc/passwd.bak
[[ -f /etc/group ]] && mv /etc/group /etc/group.bak
/etc/nsswitch.conf
文件的db_home:
设置定义Cygwin如何获取用户的主目录。db\u home:
的默认设置为
db_home: /home/%U
因此,默认情况下,Cygwin只将home dir设置为/home/$USERNAME
。您可以将其更改为指向所需的任何其他自定义路径。支持的通配符包括:
Cygwin用户名(小写u)%u
Windows用户名(大写U)%U
NetBIOS风格的Windows域%D
POSIX风格的Windows主目录。请注意,对于%H
设置,这仅在前面的斜杠之后才有意义,如db\u home:
db\u home:/%H/cygwin
由于使用空格和制表符分隔模式,因此文件名中的空格必须指定为%.
(这是一个下划线)%.
百分比字符%%
windows
用户的主目录设置为与windows主目录相同的目录,通常与%USERPROFILE%
或C:\Users\$USERNAME
类似。当然,Cygwin将Windows目录转换为POSIX样式cygwin
AD only:用户的主目录设置为cygwinUser辅助类的cygwinHome属性中给定的POSIX路径。另见unix
AD only:用户的主目录设置为posixAccount辅助类的unixHomeDirectory属性中给定的POSIX路径。另见desc
用户的主目录设置为SAM或AD中用户描述属性的home=“…”XML类似设置中给定的POSIX路径。有关详细信息,请参阅“描述模式”一节
db_home: windows
cp /etc/passwd /etc/passwd.bak
mkpasswd -l -p $(cygpath -H) > /etc/passwd
mkpasswd -d -p $(cygpath -H) >> /etc/passwd
cp /etc/group /etc/group.bak
mkgroup -l > /etc/group
mkgroup -d >> /etc/group
@echo off
SETLOCAL
set HOME=C:\path\to\home
C:
chdir C:\apps\cygwin\bin
bash --login -i
ENDLOCAL
c:/Users /home none bind 0 0