在 cygwin 中只使用一个用户

Using only one user in cygwin

我在 U 盘上安装了 Cygwin。我打算在两台计算机上使用 Cygwin。 (我的笔记本电脑和台式电脑。)

不幸的是,这两台计算机的用户名不同。 (用户和 ryang)。所以每次我切换这两台计算机时,用户主目录的位置都会发生变化。

如果我使用带有 ryang 的 Cygwin,主目录是 /home/ryang。如果我将 Cygwin 与 user 一起使用,则主目录位于 /home/user 中。但我只想使用一个用户,"sohnryang".

我不想更改那两台计算机的设置。有什么好的解决办法吗?

问题不只是两个用户对Cygwin的看法不同,他们Windows的观点也不一样。

要重命名 cygwin 用户,您可以使用文件 /etc/passwd

 mkpasswd -c > /etc/passwd
 sed -e "s/ryang:/sohnryang:/g" -i /etc/passwd

你可以在第二台电脑上重复

 mkpasswd -c >> /etc/passwd
 sed -e "s/user:/sohnryang:/g" -i /etc/passwd

所以现在两者将共享相同的 cygwin 名称。 : 只需要更改第一个和第六个字段;保持不变的第五个。

然而,这两个用户对于 Windows 也是不同的,您可以使用

进行验证
C:\Users\myself>whoami /user    
USER INFORMATION
----------------
User Name            SID
==================== =============================================
my_computer\myself   S-1-5-21-531030479-1339336681-3415091201-1009

即使 Windows 中的用户名相同,两台计算机中的两个 SID 也不同。 Windows 用户名和 SID 合并到 /etc/passwd

的第 5 个字段

SID 差异可能会导致在两台计算机上创建的文件之间出现授权问题,具体取决于系统类型。 Windows 家庭版通常比专业版更令人费解。

另一个快速解决方案 -- 如果你是每台机器上唯一的 Cygwin 用户 -- 是编辑文件 /etc/nsswitch.conf 并设置 db_home 到所需的主目录位置:

db_home: /home/MyName

这实际上并没有改变用户名本身。如果目录以这种方式硬编码,ALL 登录到 Cygwin 的用户将被设置为使用同一目录。但对于单用户系统,它快速、简单,而且非常有用。