我正在使用某个过程中访问彻底的DBU。问题是它来自另一个用户,并且DBU的会话对他们而言是不同的。因此,如果会话不同,我将无法通过另一个过程使用DBU的应用程序。我找到了解决此问题的方法:一些脚本将来自Main用户的文件DBUS会话数据写入(我将其设置为系统加载)。这是那个脚本:

#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus

这是该文件的示例:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS

现在,我只需要执行该文件的数据,两个DBUS会话都相同。这是一些麻烦:

#!/bin/bash
if [ -f /.Xdbus ]
then
    source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
    echo "File doesnt exist"
fi

如您所见,我将Pidgin用作DBUS应用程序。但这引发了错误,没有紫色的应用程序,因此DBUS会话不同!所以comand:

source /.Xdbus

不起作用。为什么?


UPD

source /.Xdbus; echo $DBUS_SESSION_BUS_ADDRESS; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"; echo $DBUS_SESSION_BUS_ADDRESS;

unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023 No existing libpurple instance detected. unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
有帮助吗?

解决方案

根据您的更新, source 命令正在工作。因此问题是 purple-remote 或者 libpurple 或某些依赖性而不是您的bash脚本。

在根目录中创建此类文件不是一个好主意。尝试为文件选择一个更合适的位置。也许之一:

  • /home/username/.Xdbus
  • /var/local/.Xdbus - 您可能必须将用户添加到拥有此目录的组
  • /tmp/.Xdbus

其他提示

我认为这是因为您使用 /哪个是文件系统的根源。您想要的是./或丹尼斯所说的绝对道路。

您还可以使用$ PWD/文件或$ {PWD}/文件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top