Libpurple Arbeit nicht von bash
Frage
Ich verwende den Zugriff auf gründlichen DBUS von einem Prozess. Das Problem ist, dass es von einem anderen Benutzer ausgeführt wird und Sitzung des DBUS ist anders für sie. So kann ich nicht acces Anwendung, die DBUS durch einen anderen Prozess verwendet, wenn die Sitzungen unterschiedlich sind. Ich fand den Weg, um dieses Problem zu beheben: einige Skript schreiben in der Datei dbus Sitzungsdaten vom Hauptnutzer (Ich stelle es bei Systembelastung). Hier ist das Skript:
#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus
Hier ist ein Beispiel für diese Datei:
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS
Nun Daten ausführen muss ich nur noch aus dieser Datei und beide DBUS Sitzungen gleich sein wird. Hier einige Probleme:
#!/bin/bash
if [ -f /.Xdbus ]
then
source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
echo "File doesnt exist"
fi
Wie man sehen konnte, ich bin mit Pidgin als DBUS Anwendung. Aber es führt den Fehler, dass es keine lila Anwendung, so dass die D-BUS-Sitzungen sind anders! So comand:
source /.Xdbus
Hat nicht funktioniert. Warum?
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
Lösung
Auf der Basis Ihrer Update lautet der Befehl source
arbeiten. Daher ist das Problem mit purple-remote
oder libpurple
oder einer Abhängigkeit anstatt mit Ihrem Bash-Skript.
Es ist keine gute Idee, solche Dateien im Stammverzeichnis zu erstellen. Versuchen Sie, eine geeignete Stelle für die Datei auswählen. Eine der folgenden vielleicht:
-
/home/username/.Xdbus
-
/var/local/.Xdbus
- haben Sie vielleicht Ihren Benutzer zur Gruppe hinzuzufügen, die dieses Verzeichnis besitzt -
/tmp/.Xdbus
Andere Tipps
Ich denke, es liegt daran, dass Sie verwenden / welche die Wurzel des Dateisystems ist. Was Sie wollen, ist ./ oder ein absoluter Pfad als sagte Dennis.
Sie können auch $ PWD / Datei oder $ {PWD} / Datei
verwenden