Answers:
我通过ssh远程登录gentoo时遇到了同样的问题。在我的情况下,这是因为缺少XDG_RUNTIME_DIR
和DBUS_SESSION_BUS_ADDRESS
环境变量。运行以下命令,然后重试:
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
如果有帮助,您可以将这些命令放入.bashrc中。我想肯定有一个比.bashrc更优雅的解决方案,但这取决于您的发行版。
编辑:
以root systemctl --user
用户su
身份登录后,我成功使用以下用户身份成功运行:
su -c 'XDG_RUNTIME_DIR="/run/user/$UID" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status' username
或使用sudo
(请注意,我必须将相应的用户UID(1000)明确添加到路径'/ run / user /',但是如果从bash脚本运行它,则可以使用$ SUDO_UID代替):
sudo -u username XDG_RUNTIME_DIR="/run/user/1000" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status
/etc/profile.d/dbus.sh
。我猜sudo
需要白名单,因为默认情况下它会清除环境。我不确定它是否只会传输当前用户的运行时目录。