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
。
答案1
$HOME
设置为/etc/passwd
用户需要的内容。要亲自查看,请创建一个名为/opt/username
用户的目录,使他们成为所有者,然后使用vipw
将其主目录更改为/opt/username
in /etc/passwd
。以用户身份登录并使用pwd
,您将看到它们位于/opt/username
并且$HOME
扩展为/opt/username
.
如果您使用命令grep username /etc/passwd
或getent passwd username
,那么您将看到 home 设置为/home/username
而不是/mnt/linux_data/01_centos/user
。就操作系统而言,主目录确实/home/username
与是否安装了另一个文件系统无关。您的系统正在正常运行。
为了澄清 LDAP,如果有通过 LDAP 进行身份验证的用户,那么他们的主目录将在 LDAP 服务器(通常是 Active Directory)中指定。您仍然可以看到它getent passwd
,如果它发生了变化,$HOME
变量将反映这一点。