TLDR:如何找到我的 XDG 用户目录的当前设置以外调用xdg-user-dir
?
我所在的系统在 中指定了非标准的 XDG 用户目录/etc/xdg/user-dirs.defaults
。我遇到了一个问题,某个程序(尚不确定是哪个程序)不断创建默认(错误)目录,目前,我正试图找出哪些程序“应该”将其视为这些目录的路径。查询这些目录的值的方法似乎是调用xdg-user-dir <WHICH_DIRECTORY>
。例如,在默认方案中,
user@host$ xdg-user-dir PICTURES
/home/user/Pictures
然而,这只能让我
user@host$ xdg-user-dir DESKTOP
/home/user/Desktop
user@host$ xdg-user-dir ANYTHING_ELSE_AT_ALL
/home/user
这是不正确的。
我经历过源代码,结果xdg-user-dir
发现该程序只检查默认为的用户特定文件~/.config/user-dirs.dirs
(该系统中不存在该文件),如果在那里找不到信息,就会盲目地输出我得到的硬编码(错误)值。它完全忽略了系统范围的配置文件。
printenv
确认已$XDG_CONFIG_DIRS
设置为/etc/xdg
,正如它应该的那样,但xdg-user-dir
忽略了这个环境变量
那么,在这种情况下,我如何确定程序看到的这些目录路径的值?程序通常如何找到它们?XDG 是否有指定的标准方法,还是特定于程序或库的?
答案1
/etc/xdg/user-dirs.conf
并且/etc/xdg/user-dirs.default
仅用于驱动xdg-user-dirs-update
程序。
根据其主页的描述,xdg-user-dirs-update
它用于在用户登录时设置用户目录。[1]
因此不存在“系统范围”配置。该文件/etc/xdg/user-dirs.defaults
仅用于创建文件$XDG_CONFIG_HOME/user-dirs.dirs
,$XDG_CONFIG_HOME/user-dirs.locale
如果文件不存在,则按照指示(并且始终按照指示)创建用户目录$XDG_CONFIG_HOME/user-dirs.dirs
,$XDG_CONFIG_HOME/user-dirs.locale
如果文件不存在,则创建用户目录。
~/.config/user-dirs.dirs
不存在意味着该程序在xdg-user-dirs-update
登录时没有运行。
例如,如果您创建新用户并仅在文本终端中登录,就会发生这种情况。但如果您登录图形桌面,它就会创建文件。
无论如何,当您没有该文件时~/.config/user-dirs.dirs
,程序的输出xdg-user-dir
是无关紧要的。
[1]
其工作方式是,xdg-user-dirs-update 在登录阶段很早就运行。该程序读取配置文件和一组默认目录。然后它在用户主目录中创建这些目录的本地化版本,并在 $(XDG_CONFIG_HOME)/user-dirs.dirs(XDG_CONFIG_HOME 默认为 ~/.config)中设置一个配置文件,应用程序可以读取该文件来找到这些目录。" -https://www.freedesktop.org/wiki/Software/xdg-user-dirs/