La variable d'environnement $ HOME est-elle toujours définie sur un système Linux?

13

En supposant que la machine exécute un noyau Linux, les sessions utilisent le shell Bash et tout utilise des configurations par défaut (aucun utilisateur n'a apporté de modifications aux fichiers de configuration), pouvons-nous supposer que la $HOMEvariable d'environnement est toujours définie?

yanhan
la source
nobodyn'a pas de maison! (C'est nobodyl'utilisateur.)
devnull
1
@devnull n'ayant pas de home (c'est-à-dire ayant un répertoire home spécifié qui n'existe pas), ne signifie pas l'env. $ HOME. la variable ne peut pas être définie. S'il est défini, il n'a tout simplement pas besoin de pointer vers un répertoire existant ni vers l'entrée home dans/etc/passwd
Anthon

Réponses:

17

Oui. La spécification POSIX nécessite que le système d'exploitation définisse une valeur pour $ HOME:

HOME
Le système doit initialiser cette variable au moment de la connexion pour être un chemin d'accès au répertoire personnel de l'utilisateur. Voir pwd.h.

Et l'utilisateur nobody?

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

Même s'il nobodyn'a pas de véritable home, HOMEest défini sur le répertoire racine.

John1024
la source
Ce n'est pas le shell qui définit HOME- aucun des shells courants ne fait que zsh. C'est le programme qui vous connecte (y compris les méthodes comme cron).
Gilles 'SO- arrête d'être méchant'