J'ai des problèmes avec une application Web que j'écris :l'application Web, qui s'exécute en tant qu'utilisateur nobody , doit lancer un inkscape processus pour manipuler certains fichiers SVG. Parce que cela s'exécute en tant qu'utilisateur nobody , il n'y a pas de répertoire personnel. Ce que je fais est de créer un répertoire temporaire sous /tmp et en essayant de le définir comme répertoire personnel via export HOME=/tmp/someUniqueId . J'ai ensuite défini quelques éléments dans ce répertoire personnel "temporaire", comme un lien symbolique .fonts dans le dossier des fichiers de polices à utiliser.
Je sais que cela fonctionne pour trouver le ~/.fonts annuaire. Mais quand je lance Inkscape, tout ce que je reçois est un message indiquant qu'Inkscape n'a pas pu créer le .inkscape répertoire :

$HOME n'est pas définir l'emplacement de mon répertoire personnel ? Pourquoi Inkscape essaie-t-il toujours d'accéder à / comme répertoire personnel ?
Réponse acceptée :
Inkscape, étant une application GTK, utilise la fonction GLib g_get_home_dir pour trouver le répertoire personnel de l'utilisateur. Comme documenté dans ce lien, g_get_home_dir ne consulte pas $HOME , mais plutôt /etc/passwd . Vous devrez patcher Inkscape pour vérifier $HOME d'abord (comme indiqué dans ce lien).