首次启动Cygwin shell时,您将以Windows上的用户身份登录。如何更改该用户的用户名,将Cygwin用户的现有cygwin关联与Windows用户保持一致? (即没有创建一个全新的Windows帐户)
为什么呢?我刚从虚拟机转移到Cygwin,并希望重用我的所有脚本和shell自定义,这些脚本和shell自定义假设一个特定的用户名(想想.ssh / config,.subversion等)而不做任何更改。
答案 0 :(得分:16)
对于以干净的Cygwin安装开始的人来说,一种方法可能是创建新的/etc/passwd
文件(在当前的Cygwin版本中,默认情况下不存在)
mkpasswd -l >/etc/passwd
将为每个用户创建一个条目
(添加-b
以省略内置用户,或仅添加-c
以仅为当前用户创建条目,请参阅https://cygwin.com/cygwin-ug-net/mkpasswd.html)。
接下来,只需打开/etc/passwd
重命名帐户(第一列)。
有关Cygwin如何处理" Cygwin"之间的映射的说明,请参阅https://cygwin.com/cygwin-ug-net/ntsec.html。和Windows用户。
哦,还有mkgroup
可以类似地使用,请参阅https://cygwin.com/cygwin-ug-net/mkgroup.html。
你会看到创建不是官方推荐的,但从我的经验来看它并没有造成任何问题,如果你做了涉及用户/团体权利的相当高级的东西,或者如果你没有保持它 - 更改Windows用户时的最新版本。
答案 1 :(得分:5)
我的原始用户名是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
)
答案 2 :(得分:3)
这就是我在Windows 10上所做的,它结合了另外两个答案的元素:
答案 3 :(得分:0)
这是对我有用的(Windows 10):
rm /etc/passwd
mkpasswd -c > /etc/passwd
ln -s /home/oldname /home/newname
sed -i 's/oldname/newname/g' /etc/passwd