Libpurple不从bash工作

我正在使用从某个进程访问彻底的DBUS。 麻烦的是,它从另一个用户运行,DBUS的会话是不同的。 所以如果会话不同,我不能访问使用DBUS的应用程序。 我find了解决这个问题的方法:一些脚本写入文件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会话是不同的! 所以要命令:

 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-remotelibpurple或一些依赖,而不是你的Bash脚本。

在根目录下创建这样的文件不是一个好主意。 尝试为您的文件选择一个更合适的位置。 以下其中一个可能:

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

我想这是因为你使用/哪个是文件系统的根。 你想要的是丹尼斯所说的绝对路径。

您也可以使用$ PWD / file或$ {pwd} / file