Ich habe Probleme mit einer Webanwendung, die ich schreibe:Die Webanwendung, die als Benutzer nobody ausgeführt wird , muss ein inkscape starten Prozess, um einige SVG-Dateien zu manipulieren. Denn dieser läuft als Benutzer nobody , es gibt kein Home-Verzeichnis. Ich erstelle ein temporäres Verzeichnis unter /tmp und versuchen, dies über export HOME=/tmp/someUniqueId als Home-Verzeichnis festzulegen . Ich habe dann ein paar Dinge in dieses „temporäre“ Home-Verzeichnis gesetzt, wie einen Symlink .fonts in den Ordner für die zu verwendenden Schriftdateien.
Ich weiß, dass dies funktioniert, um die ~/.fonts zu finden Verzeichnis. Aber wenn ich Inkscape starte, bekomme ich nur eine Meldung, dass Inkscape die .inkscape nicht erstellen konnte Verzeichnis:

Nicht $HOME den Speicherort meines Home-Verzeichnisses festlegen? Warum versucht Inkscape immer noch, auf / zuzugreifen als mein Home-Verzeichnis?
Akzeptierte Antwort:
Inkscape, eine GTK-Anwendung, verwendet die GLib-Funktion g_get_home_dir, um das Home-Verzeichnis des Benutzers zu finden. Wie in diesem Link dokumentiert, g_get_home_dir konsultiert $HOME nicht , sondern /etc/passwd . Sie müssen Inkscape patchen, um $HOME zu überprüfen zuerst (wie in diesem Link gezeigt).