La variabile d'ambiente $ HOME è sempre impostata su un sistema Linux?


13

Supponendo che la macchina stia eseguendo un kernel Linux, le sessioni utilizzino la shell Bash e tutto stia usando configurazioni predefinite (nessun utente ha apportato modifiche ai file di configurazione), possiamo supporre che la $HOMEvariabile d'ambiente sia sempre impostata?


nobodynon ha una casa! (È nobodyl'utente.)
Devnull

1
@devnull non avendo una home (cioè avendo una home directory specificata che non esiste), non significa $ HOME env. la variabile non può essere impostata. Se è impostato, non deve semplicemente puntare a una directory esistente né alla voce home in/etc/passwd
Anthon,

Risposte:


17

Sì. La specifica POSIX richiede al sistema operativo di impostare un valore per $ HOME:

HOME
Il sistema deve inizializzare questa variabile al momento dell'accesso come percorso della home directory dell'utente. Vedi pwd.h.

E l'utente nobody?

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

Anche se nobodynon ha una vera home, HOMEè impostato sulla directory principale.


Non è la shell che imposta HOME- nessuna delle shell comuni fa tranne zsh. È il programma che ti accede (inclusi metodi come cron).
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.