打印主目录的完整路径

打印主目录的完整路径

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/usernamein /etc/passwd。以用户身份登录并使用pwd,您将看到它们位于/opt/username并且$HOME扩展为/opt/username.

如果您使用命令grep username /etc/passwdgetent passwd username,那么您将看到 home 设置为/home/username而不是/mnt/linux_data/01_centos/user。就操作系统而言,主目录确实/home/username与是否安装了另一个文件系统无关。您的系统正在正常运行。

为了澄清 LDAP,如果有通过 LDAP 进行身份验证的用户,那么他们的主目录将在 LDAP 服务器(通常是 Active Directory)中指定。您仍然可以看到它getent passwd,如果它发生了变化,$HOME变量将反映这一点。

相关内容