xdg在Linux中的用法,linux-如何使用sudo获取XDG变量?

我需要检索所有用户的$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)上,使用pam模块pam_systemd初始化用户会话时,定义了一些XDG变量.手册页中记录了定义为要初始化的变量,但其中包括XDG_RUNTIME_DIR.

此模块仅在登录情况下加载-即我需要ssh到系统,或通过控制台/ gui登录以通过pam_systemd模块初始化要初始化的用户会话.

在su或sudo情况下不会加载此模块.

结果,当您执行sudo模拟用户时,未设置此变量.

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

因此,您应该只期望在交互式登录用例中设置这些变量,而不是通过非交互式用例设置-sudo将被有效地指定为非交互式用例,即使您可以使用它进行交互式操作.

这些值是非常模板化的-例如我系统上的XDG_RUNTIME_DIR是/ var / run / UID,并且按照手册页的说明,在我上次注销后仍然无法生存;因此它不是放置永久文件的地方.

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

标签:sudo,linux

来源: https://codeday.me/bug/20191120/2045677.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值