Czy zmienna środowiskowa $ HOME jest zawsze ustawiona w systemie Linux?

13

Zakładając, że na maszynie działa jądro Linuksa, sesje korzystają z powłoki Bash i wszystko korzysta z domyślnych konfiguracji (żaden użytkownik nie wprowadził żadnych zmian w plikach konfiguracyjnych), czy możemy założyć, że $HOMEzmienna środowiskowa jest zawsze ustawiona?

Yanhan
źródło
nobodynie ma domu! (To nobodyużytkownik.)
devnull
1
@devnull nie ma katalogu domowego (tzn. nie ma określonego katalogu domowego, który nie istnieje), nie oznacza env $ HOME. zmiennej nie można ustawić. Jeśli jest ustawiony, po prostu nie musi wskazywać na istniejący katalog ani na pozycję domową w/etc/passwd
Anthon

Odpowiedzi:

17

Tak. Specyfikacja POSIX wymaga, aby system operacyjny ustawił wartość dla $ HOME:

HOME
System powinien zainicjować tę zmienną podczas logowania, aby była ścieżką do katalogu domowego użytkownika. Zobacz pwd.h.

Co z użytkownikiem nobody?

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

Chociaż nobodynie ma prawdziwego domu, HOMEjest ustawiony na katalog główny.

John1024
źródło
To nie jest powłoka, która ustawia HOME- żadna ze zwykłych powłok nie robi oprócz zsh. Jest to program, który Cię loguje (w tym metody takie jak cron).
Gilles „SO- przestań być zły”