当您第一次启动 Cygwin shell 时,您以您在 Windows 上的用户身份登录。如何仅更改该用户的用户名,而将 Cygwin 用户的现有 cygwin 关联保留给 Windows 用户?(即无需创建全新的 Windows 帐户)
为什么?我刚刚从虚拟机转移到 Cygwin,并希望重用我的所有脚本和 shell 自定义,这些脚本和 shell 自定义假定特定的用户名(想想 .ssh/config、.subversion 等)而无需更改。
当您第一次启动 Cygwin shell 时,您以您在 Windows 上的用户身份登录。如何仅更改该用户的用户名,而将 Cygwin 用户的现有 cygwin 关联保留给 Windows 用户?(即无需创建全新的 Windows 帐户)
为什么?我刚刚从虚拟机转移到 Cygwin,并希望重用我的所有脚本和 shell 自定义,这些脚本和 shell 自定义假定特定的用户名(想想 .ssh/config、.subversion 等)而无需更改。
对于从干净的 Cygwin 安装开始的人,一种方法可能是创建新/etc/passwd
文件(在当前 Cygwin 版本中默认不存在),使用
mkpasswd -l >/etc/passwd
它将为每个用户创建一个条目(添加-b
以省略内置用户或-c
仅为当前用户创建一个条目,请参阅https://cygwin.com/cygwin-ug-net/mkpasswd.html)。
接下来,只需/etc/passwd
在其中打开重命名帐户(第一列)。
请参阅https://cygwin.com/cygwin-ug-net/ntsec.html,了解 Cygwin 如何处理“Cygwin”和 Windows 用户之间的映射。哦,还有一个mkgroup
可以类似使用的,请参阅https://cygwin.com/cygwin-ug-net/mkgroup.html。
您会看到官方不推荐创建,但根据我的经验,它没有引起任何问题,如果您会做涉及用户/组权限的相当高级的事情,或者如果您没有保持最新,也许它可能会更改 Windows 用户。
我原来的用户名是root
(具有讽刺意味的是在 Windows 下),我希望它是someuser
. 我想我希望我的主目录/home/someuser
也是如此,并且可以从 Windows 读取。
这就是我所做的:
cd /home
mv root someuser
ln -s someuser root
sed -e 's/^root/someuser/' -e 's/\/home\/root/\/home\/user/' -i /etc/passwd
仅此而已,只需重新启动 shell。
我创建了符号链接,以防 Cygwin/etc/passwd
出于某种原因更新,并将用户名恢复为root
并将其主目录恢复为/home/root
,以便仍然可以登录。
(仅更改用户名sed -e 's/^root/someuser/' -i /etc/passwd
:)
这对我有用(Windows 10):
rm /etc/passwd
mkpasswd -c > /etc/passwd
ln -s /home/oldname /home/newname
sed -i 's/oldname/newname/g' /etc/passwd
这就是我在 Windows 10 上所做的,它结合了其他三个答案的元素: