简而言之
在WSL中,将以下内容添加到您的~/.bashrc
文件中,以解决此问题:
export XDG_RUNTIME_DIR=/your/chosen/directory
然而,我相信对于这个问题,进一步的澄清是很重要的:
XDG_RUNTIME_DIR是什么?
$XDG_RUNTIME_DIR环境变量是构成XDG基目录规范的许多环境变量之一。官方规范可从XD G官方网站获取,尽管规范不长,但Arch Wiki上提供了更简明的版本。
它为什么存在?
该规范的出现是因为UNIX,以及Linux,没有提到用户或程序可以存储其文件的位置。(想象一下,例如Windows没有“文档”文件夹或“下载”文件夹。那么下载的文件将保存在哪里?每个应用程序都必须自行决定在文件系统中的何处保存它。)因此,在UNIX早期,您的文件系统可能会变得杂乱无章,因为每个应用程序都会在文件系统中创建自己的目录,并在其中使用,而您不知道如何找到它。
XDG基础目录规范的目的是为用户和程序提供一致的位置来存储不同类型的文件。这有助于使您的文件夹更加有组织,并使您更容易找到重要的配置、数据和运行时文件。
该规范为文件存储提供了一些默认值,并且这些默认值可以通过设置环境变量进行覆盖。例如,规范指定配置文件默认存储在“~/.config/”中,但通过设置“$XDG_CONFIG_HOME”,配置文件将使用环境变量指定的路径。
为什么WSL会出现这个问题?
缺少XDG环境变量通常不是一个问题,也不特定于WSL。由于应用程序找不到它正在寻找的变量,它会创建自己的目录来存储文件。大多数应用程序都会这样做并且可以正常运行。
如何解决这个警告?
在运行需要使用它的程序之前,在WSL中设置环境变量XDG_RUNTIME_DIR
通常是解决这个问题的最简单方法。最简单的方法可能是将以下内容附加到您的.bashrc
文件中,这样在打开Shell时即可设置环境变量。
export XDG_RUNTIME_DIR=/your/chosen/directory
在选择目录时,请记住以下内容(取自
规范):
$XDG_RUNTIME_DIR定义了基本目录,相对于该目录,用户特定的非必要运行时文件和其他文件对象(如套接字、命名管道等)应该存储。
该目录必须归用户所有,并且他必须是唯一拥有读写访问权限的人。它的Unix访问模式必须为0700。
*趣闻:~/.bashrc本身就是一个配置文件。Bash是在创建XDG基本目录规范之前编写的,因此直接将其配置文件放置在主目录中。您可以想象如果每个程序都这样做会变得多么混乱。这是XDG试图通过他们的规范解决的问题。
XDG_RUNTIME_DIR
和RUNLEVEL
有什么用途? - HelloGoodbye