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
變數將反映這一點。