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
が、OS が であると認識している への完全なパスを印刷する手段が必要です /home
。
答え1
$HOME
/etc/passwd
は、ユーザーの に設定されているものに設定されます。確認するには、/opt/username
ユーザー用に というディレクトリを作成し、そのユーザーを所有者にして、 を使用してそのユーザーのホームを にvipw
変更します。ユーザーとしてログインして を使用すると、そのユーザーが に存在し、に展開されていることがわかります。/opt/username
/etc/passwd
pwd
/opt/username
$HOME
/opt/username
コマンドgrep username /etc/passwd
またはを使用するとgetent passwd username
、ホームが/home/username
ではなく に設定されていることがわかり/mnt/linux_data/01_centos/user
ます。OS に関する限り、/home/username
別のファイルシステムがそこにマウントされているかどうかに関係なく、ホームは です。システムは期待どおりに機能しています。
LDAP について明確に説明すると、LDAP 経由で認証するユーザーがいる場合、そのユーザーのホーム ディレクトリは、通常は Active Directory である LDAP サーバーで指定されます。引き続きこれを確認できgetent passwd
、そこで変更された場合は、$HOME
変数にそれが反映されます。