$HOME 不应该是用户主目录的位置吗?

Jos*_*osh 6 headless x11 environment-variables home

我正在编写的 Web 应用程序遇到问题:作为 user 运行的 Web 应用程序nobody需要启动一个inkscape进程来操作一些 SVG 文件。因为它以 user 身份运行nobody,所以没有主目录。我正在做的是在下面创建一个临时目录/tmp并尝试通过export HOME=/tmp/someUniqueId. 然后,我在该“临时”主目录中设置了一些内容,例如.fonts指向要使用的字体文件的文件夹的符号链接。

我知道这适用于查找~/.fonts目录。但是当我启动 Inkscape 时,我得到的只是一条消息,表明 Inkscape 无法创建.inkscape目录:

无法创建目录 /.inkscape

没有$HOME设置我的主目录的位置?为什么 Inkscape 仍然试图/作为我的主目录访问?

cjm*_*cjm 13

Inkscape 是一个 GTK 应用程序,它使用 GLib g_get_home_dir函数来查找用户的主目录。如该链接中所述,g_get_home_dir不咨询$HOME,而是/etc/passwd。您必须先修补 Inkscape 以进行检查$HOME(如该链接所示)。

  • 我确信`g_get_home_dir` 使用*nsswitch* 而不是简单地检查`/etc/passwd`。(不过,在个人计算机上也是如此。) (3认同)