ホームディレクトリへのフルパスを印刷する

ホームディレクトリへのフルパスを印刷する

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/passwdpwd/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変数にそれが反映されます。

関連情報