Pregunta

Estoy usando el acceso DBUS a fondo de algún proceso. El problema es que funciona de otro usuario y la sesión de DBUS es diferente para ellos. Por lo tanto, no puede acces aplicación que utiliza DBUS través de otro proceso si las sesiones son diferentes. He encontrado la manera de resolver este problema: algunas escrituras guión en los datos de sesión dbus archivo de usuario principal (lo fijo en la carga del sistema). Aquí es que el guión:

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

Este es un ejemplo de ese archivo:

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

Ahora sólo tengo para ejecutar datos de ese archivo y las dos sesiones DBUS serán iguales. Aquí es algunas dificultades:

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

Como se puede ver, estoy usando pidgin como la aplicación DBUS. Pero lanza el error, de que no hay ninguna aplicación púrpura, por lo que las sesiones DBUS son diferentes! Así COMAND:

source /.Xdbus

no funcionó. ¿Por qué?


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
¿Fue útil?

Solución

En función de su actualización, el comando es source de trabajo. Por lo tanto, el problema es con purple-remote o libpurple o alguna dependencia en lugar de con la secuencia de comandos Bash.

No es una buena idea para crear este tipo de archivos en el directorio raíz. Trate de elegir un lugar más apropiado para su archivo. Uno de los siguientes quizá:

  • /home/username/.Xdbus
  • /var/local/.Xdbus - puede que tenga que añadir su usuario al grupo al que pertenece este directorio
  • /tmp/.Xdbus

Otros consejos

creo que se debe a que utiliza / que es la raíz del sistema de archivos. Lo que queremos es ./ o una ruta absoluta como se dijo Dennis.

También puede utilizar $ PWD / archivo o $ {} pwd / archivo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top