echo $HOME
只会打印 /home/user
。但在我的系统中,/home
不是挂载在/
它自己的分区下也不是。
# shared linux data partition, `/home` is here
UUID=a89334f7-59b7-4d04-b89b-a5a30c379644 /mnt/linux_data ext4 defaults 1 2
主目录使用绑定挂载挂载,
# bind mount /home to directory to a directory on /linux_data
/mnt/linux_data/01_centos /home none bind 0 0
单击 Caja 中的主目录图标,位置栏显示 /home/user
. 但是这个目录实际上应该是/mnt/linux_data/01_centos/user
那个位置确实存在的目录。/mnt/linux_data/01_centos/user
我可以通过 Caja 中的图标导航到,/root
但我想要一些方法来打印操作系统认为的完整路径 /home
。
$HOME
设置/etc/passwd
为用户的内容。要亲自查看,请创建一个名为/opt/username
用户的目录,使他们成为所有者,然后使用vipw
将他们的家更改为/opt/username
in/etc/passwd
。以用户身份登录并使用pwd
,您会看到他们在/opt/username
其中,并且$HOME
扩展为/opt/username
.如果您使用命令
grep username /etc/passwd
orgetent passwd username
,那么您将看到 home 设置为/home/username
而不是/mnt/linux_data/01_centos/user
。就操作系统而言,home 确实/home/username
与是否安装了另一个文件系统无关。您的系统运行正常。为了澄清 LDAP,如果有用户通过 LDAP 进行身份验证,那么他们的主目录将在 LDAP 服务器中指定,该服务器通常是 Active Directory。您仍然可以看到它,
getent passwd
如果它在那里发生了变化,$HOME
变量将反映这一点。