O $ HOME não deveria ser o local do diretório pessoal do usuário?

6

Estou tendo problemas com um aplicativo da Web que estou escrevendo: o aplicativo da Web, que é executado como usuário nobody , precisa iniciar um processo inkscape para manipular alguns arquivos SVG. Como isso é executado como usuário nobody , não há diretório inicial. O que estou fazendo é criar um diretório temporário em /tmp e tentar defini-lo como o diretório inicial por meio de export HOME=/tmp/someUniqueId . Em seguida, defino algumas coisas nesse diretório inicial "temporário", como um link simbólico .fonts para a pasta dos arquivos de fontes a serem usados.

Eu sei que isso funciona para encontrar o diretório ~/.fonts . Mas quando eu inicio o Inkscape, tudo que eu vejo é uma mensagem que o Inkscape não pode criar o diretório .inkscape :

Não $HOME define a localização do meu diretório inicial? Por que o Inkscape ainda está tentando acessar o / como meu diretório inicial?

    
por Josh 13.06.2011 / 22:01

2 respostas

13

O Inkscape, sendo um aplicativo GTK, usa o GLib g_get_home_dir função para encontrar o diretório pessoal do usuário. Conforme documentado nesse link, g_get_home_dir não consulta $HOME , mas sim /etc/passwd . Você teria que corrigir o Inkscape para verificar $HOME primeiro (como mostrado neste link).

    
por 13.06.2011 / 22:54
4

Sim, o diretório inicial do usuário atual deve ser o que a variável de ambiente HOME indicar. Existe, é claro, uma configuração de sistema global: a entrada em /etc/passwd ou, mais geralmente, o campo inicial no banco de dados do usuário. Os aplicativos devem usar essa configuração apenas para procurar um usuário diferente do usuário atual ou se houver aplicativos de segurança (por exemplo, um programa setuid). Caso contrário, $HOME deve ter precedência. Se isso não acontecer, é um bug no aplicativo.

mostra que o Inkscape e outras aplicações do Gnome são buggy a esse respeito.

    
por 13.06.2011 / 23:53