gpt4 book ai didi

linux - 如何使用 sudo 获取 XDG 变量?

转载 作者:太空狗 更新时间:2023-10-29 11:08:35 26 4
gpt4 key购买 nike

我需要检索所有用户的 $XDG_CONFIG_HOME、$XDG_RUNTIME_DIR 和 $XDG_DATA_HOME。我尝试:

sudo -Eiu user printenv | grep XDG_CONFIG_HOME

但我什么也没得到。

如果我使用用户帐户登录,简单的命令:

printenv | grep XDG_CONFIG_HOME

工作正常。

我该怎么做?

最佳答案

TLDR,这些变量在sudo情况下不可用,有些甚至在标准登录情况下根本不能设置。

在我的 linux 系统 (debian 8) 上,一些 XDG 变量是在使用 pam 模块 pam_systemd 初始化用户 session 时定义的。定义为在此时初始化的变量记录在手册页中,但包括 XDG_RUNTIME_DIR

此模块仅在登录情况下加载 - 即我需要通过 ssh 连接到系统,或通过控制台/GUI 登录以通过 pam_systemd 模块初始化用户 session 。

susudo 情况下不加载此模块。

因此,当您执行 sudo 来模拟用户时,此变量未设置。

其他 XDG 变量仅在用户实际登录到 GUI 时适用。我没有在我使用的 GUI 上设置这些变量,但是 the docs for XDG variables如果未设置,请指定它们应该默认的内容。 XDG_CONFIG_HOME的默认值为$HOME/.configXDG_DATA_HOME的默认值为$HOME/.local/share

所以你应该只期望在交互式登录情况下设置这些变量,而不是通过非交互式情况 - sudo 将被有效地指定为非交互式情况,即使你可以用它做一些互动的事情。

这些值非常模板化 - 例如我系统上的 XDG_RUNTIME_DIR/var/run/UID,并且根据手册页,在我上次注销后无法生存;所以它不是放置永久文件的地方。

除非您作为用户更改这些值,否则我希望使用 XDG 文档中指定的默认值,the KDE compliance页面是被使用的页面。可能还有其他的,但我只是选择了 KDE 合规性,因为它在系统管理指南中提到了这一点。

关于linux - 如何使用 sudo 获取 XDG 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28809235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com