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,它确实存在于那个位置。通过浏览Caja中的/mnt/linux_data/01_centos/user图标,我可以导航到/root,但是我想要一些方法来打印出操作系统认为是/home的完整路径。
发布于 2021-10-28 02:32:50
$HOME设置为用户在/etc/passwd中的内容。要自己查看,请为用户创建一个名为/opt/username的目录,使其成为所有者,然后使用vipw将其主页更改为/etc/passwd中的/opt/username。以用户身份登录并使用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变量将反映这一点。
https://unix.stackexchange.com/questions/675080
复制相似问题