Is the $HOME environment variable always set on a Linux system

environment-variableshome

Assuming the machine is running a Linux kernel, sessions make use of the Bash shell and everything is using default configurations (no user has made any changes to config files), can we assume that the $HOME environment variable is always set?

Best Answer

Yes. The POSIX specification requires the OS to set a value for $HOME:

HOME
The system shall initialize this variable at the time of login to be a pathname of the user's home directory. See pwd.h.

What about user nobody?

# su - nobody
No directory, logging in with HOME=/
$ echo $HOME
/

Even though nobody has no true home, HOME is set to the root directory.

Related Question