Sua pergunta me intriga e eu não tenho uma resposta pronta. Nenhum Unix, Linux ou * BSD que eu tentei possui uma chamada de sistema relacionada ao "diretório home". Eu não posso pesquisar nada sobre o kernel Linux conhecendo o diretório pessoal do usuário. Então, acredito que o valor de $HOME
é a fonte oficial de registro de um shell para descobrir o "diretório inicial". O programa de login define HOME
com base no conteúdo de /etc/passwd
quando o programa de login forks e executa o shell de um usuário.
Como você percebeu, se o valor de $HOME
não corresponder ao nome de um diretório, as coisas ficam um pouco difíceis, principalmente na área de conveniências de shell, mas nada realmente se rompe - você ainda pode use o shell de login. Eu experimentei definindo export HOME=/var/tmp
. bash
parece não se importar, e cd ~
leva você diretamente para / var / tmp.