I was wondering about that too… According to the spec:
/home is a fairly standard concept, but it is clearly a site-specific filesystem. The setup will differ from host to host. Therefore, no program should assume any specific location for a home directory, rather it should query for it.
Sometimes home directories are in other locations. My University used to have different mount points for different graduating classes on our Unix servers. And I use “/home2” for one of my servers for… reasons.
Though I’m not sure that qualifies as “deprecated”? I get the “non-standard” bit though.
You also have to consider that roots homedir is in /root and not home, so if you’d just assume it’s /home/$USER you’d get in trouble when your programm is run or compiled as root.
I was wondering about that too… According to the spec:
Sometimes home directories are in other locations. My University used to have different mount points for different graduating classes on our Unix servers. And I use “/home2” for one of my servers for… reasons.
Though I’m not sure that qualifies as “deprecated”? I get the “non-standard” bit though.
How about $HOME, is it standardized?
$HOME is a shell variable, created by the shell as it starts, reading from the /etc/passwd file. It’s a string, not a symlink or anything.
I mean about the ‘should query for it’ part.
For the currently logged-in user it’s fine, yes. It should always be set.
You also have to consider that roots homedir is in /root and not home, so if you’d just assume it’s /home/$USER you’d get in trouble when your programm is run or compiled as root.