A variável de ambiente $ HOME está sempre definida em um sistema Linux?

13

Supondo que a máquina esteja executando um kernel Linux, as sessões fazem uso do shell Bash e tudo está usando as configurações padrão (nenhum usuário fez alterações nos arquivos de configuração), podemos assumir que a $HOMEvariável de ambiente está sempre definida?

yanhan
fonte
nobodynão tem casa! (É nobody, o usuário.)
devnull
1
@devnull não possui uma casa (por exemplo, ter um diretório inicial especificado que não existe), não significa o $ HOME env. variável não pode ser definida. Se for definido, ele simplesmente não tem que apontam para um diretório existente nem à sujeição casa em/etc/passwd
Anthon

Respostas:

16

Sim. A especificação POSIX requer que o sistema operacional defina um valor para $ HOME:

HOME
O sistema deve inicializar essa variável no momento do login para ser o nome do caminho do diretório inicial do usuário. Veja pwd.h.

E o usuário nobody?

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

Mesmo que nobodynão tenha um lar verdadeiro, HOMEestá definido para o diretório raiz.

John1024
fonte
Não é o shell que define HOME- nenhum dos shells comuns, exceto o zsh. É o programa que efetua login (incluindo métodos como cron).
Gilles 'SO- stop be evil'