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?


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.


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”
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.