Infelizmente, isso depende muito do seu aplicativo. Existem várias maneiras de um aplicativo poder vislumbrar o diretório pessoal de um usuário.
-
$HOME
Você já está ciente disso.
$HOME
é uma variável de ambiente que pode ser substituída por meio da configuração de login. arquivos como.bashrc
ou.bash_profile
em um ambiente Bash. O valor geralmente é algo como/home/username
. -
/home/$USER
Eu consideraria essa uma variante de
$HOME
, mas encontrei aplicativos que tolamente supõem que o diretório pessoal de um usuário precisa estar em/home
, então eles adicionam a variável$USER
e a usam. -
analisando
/etc/passwd
Este é provavelmente o pior ofensor em termos da pior maneira de obter o diretório pessoal de um usuário, mas muitas ferramentas e scripts fazem isso dessa maneira. A maioria deles é uma variação de algo como isso, onde eles usam o comando
getent
:$ getent passwd | grep $1 | awk -F: '{ print $6 }' # for example (user "saml") $ getent passwd | grep saml | awk -F: '{ print $6 }' /home/saml
O "banco de dados" back-end que armazena as informações do usuário pode ser qualquer coisa, desde o arquivo
/etc/passwd
até o NIS, até um banco de dados LDAP. -
GTK &
g_get_home_dir()
A biblioteca GTK fornece uma API,
g_get_home_dir()
, que extrairá informações do usuário do backend "passwd" em vez de usar$HOME
.trecho de Referência do GLib Manual
Note that in contrast to traditional Unix tools, this function prefers passwd entries over the HOME environment variable.
-
KDE
O KDE parece fazer uso do $ HOME. Primeiro, ele procurará
KDEHOME
, voltando para$HOME/.kde
se isso não estiver definido.excerto Administração do sistema do KDE / Hierarquia do sistema de arquivos do KDE
This directory tree is, as the name suggests, normally located in the user's home directory. If this environment variable is not defined, the default location $HOME/.kde4 is used.