Ist die Umgebungsvariable $ HOME auf einem Linux-System immer gesetzt?

13

Unter der Annahme, dass auf dem Computer ein Linux-Kernel ausgeführt wird, Sitzungen die Bash-Shell verwenden und alle Standardkonfigurationen verwendet werden (kein Benutzer hat Änderungen an den Konfigurationsdateien vorgenommen), können wir davon ausgehen, dass die $HOMEUmgebungsvariable immer gesetzt ist?

Yanhan
quelle
nobodyhat kein Zuhause! (Es ist nobody, der Benutzer.)
Devnull
1
@devnull hat kein Home (dh es wurde ein Home-Verzeichnis angegeben, das nicht existiert), bedeutet nicht $ HOME env. Variable kann nicht gesetzt werden. Wenn es festgelegt ist, muss es nicht auf ein vorhandenes Verzeichnis oder auf den Haupteintrag in/etc/passwd
Anthon,

Antworten:

16

Ja. Die POSIX-Spezifikation erfordert, dass das Betriebssystem einen Wert für $ HOME festlegt:

HOME
Das System initialisiert diese Variable zum Zeitpunkt der Anmeldung so, dass sie ein Pfadname des Home-Verzeichnisses des Benutzers ist. Siehe pwd.h.

Was ist mit Benutzer nobody?

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

Auch wenn nobodyes kein echtes Zuhause gibt, HOMEwird auf das Stammverzeichnis gesetzt.

John1024
quelle
Es ist nicht die Shell, die setzt HOME- keine der gebräuchlichen Shells tut es außer zsh. Es ist das Programm, das Sie anmeldet (einschließlich Methoden wie cron).
Gilles 'SO- hör auf böse zu sein'