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.